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