我希望能够做到这一点。例如,这是我的代码:
(cond [true AA]
[else BB])
在AA中,我希望它做两件事。 1是设置全局变量的值,然后返回一个字符串。我该怎么做呢?
答案 0 :(得分:9)
在cond
特殊形式中,每个条件后都有一个隐含的begin
,因此可以写几个表达式,记住只返回最后一个的值。像这样:
(cond [<first condition>
(set! global-variable value)
"string to return"]
[else
"other return value"])
答案 1 :(得分:0)
这种事情可以在Scheme R5RS规范中轻松找到。 这是值得一读的,因为它是有史以来最好的语言规范之一!
您可能会发现使用的其他语法关键字:
(if <predicate> <consequent> <alternate>)
(begin <expression-or-declaration> ... <expression>)
(case <expression> <case-clause> ...)
(and <test> ...)
... others ...
答案 2 :(得分:0)
创建一个辅助函数,完成两件事。请在适当时调用if语句:
(cond [(test? something) (your-function your-data)]
[else (another-function your-data)])
一种不太直接的方法是调用两个函数并用“和”“链接”它们:
(cond [(test? something)
(and (do-this data) (do-that data))]
[else (do-something-else data)])