Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Racket 如何在返回多个值的结构中编写guard子句_Racket - Fatal编程技术网

Racket 如何在返回多个值的结构中编写guard子句

Racket 如何在返回多个值的结构中编写guard子句,racket,Racket,我试图在球拍中创建一个结构,因为我一直在自学它,并且我一直在尝试为它运行不同的实践问题。现在,我正在尝试创建一个具有以下规范的结构: 名称:等级 字段: 期中(必须是整数且大于0 final(必须是整数且大于0) 课程(必须为symbol或false) 到目前为止,我写的是 (结构等级(期中期末课程) #:guard(λ(期中期末课程名称) (除非(和(整数?最终值)(>最终值0)) (错误“不是有效的最终成绩”)) (除非(和(整数?中期)(>中期0)) (错误“不是有效的期中成绩”)) (除

我试图在球拍中创建一个结构,因为我一直在自学它,并且我一直在尝试为它运行不同的实践问题。现在,我正在尝试创建一个具有以下规范的结构:

名称:
等级

字段:

期中
(必须是整数且大于0
final
(必须是整数且大于0)
课程
(必须为symbol或false)

到目前为止,我写的是

(结构等级(期中期末课程)
#:guard(λ(期中期末课程名称)
(除非(和(整数?最终值)(>最终值0))
(错误“不是有效的最终成绩”))
(除非(和(整数?中期)(>中期0))
(错误“不是有效的期中成绩”))
(除非(或(符号?航向)(假航向))
(错误“不是有效的课程成绩”))
(期中期末课程)

但它是不可实现的。我相信这是因为guard子句返回列表
(期中期末课程)
,但我尝试过的其他实现,其中涉及guard子句返回
(期中期末课程)
和just
期中期末课程也不起作用。我该怎么做才能让这个guard子句起作用?

guard子句的结果必须是n,结构的每个字段一个。请注意,这与列表不同。假设其余逻辑正确,您只需替换
”(期中期末课程)
(价值观期中期末课程)
。完整结果如下

(struct grade (midterm final course)
  #:guard (λ (midterm final course name)
            (unless (and (integer? final) (> final 0))
              (error "not a valid final grade"))
            (unless (and (integer? midterm) (> midterm 0))
              (error "not a valid midterm grade"))
            (unless (or (symbol? course) (false? course))
              (error "not a valid course grade"))
            (values midterm final course)))

有了这个,我可以做
(100级100'球拍101)
,例如。

谢谢!我不知道
值存在。这太完美了。