5

我希望能够做到这一点。例如,这是我的代码:

    (cond [true AA]
          [else BB])

在 AA,我希望它做两件事。1是设置一个全局变量的值,然后返回一个字符串。我该怎么做呢?

4

3 回答 3

9

cond特殊形式中,每个条件后面都有一个隐式begin,所以可以写几个表达式,记住只会返回最后一个的值。像这样:

(cond [<first condition>
       (set! global-variable value)
       "string to return"]
      [else
       "other return value"])
于 2013-06-11T13:34:37.283 回答
0

这种事情很容易在Scheme R5RS规范中找到。 它真的值得一读,因为它是有史以来最好的语言规范之一

您可能会发现使用的其他语法关键字:

(if <predicate> <consequent> <alternate>)
(begin <expression-or-declaration> ... <expression>)
(case <expression> <case-clause> ...)
(and <test> ...)
... others ...
于 2013-06-12T14:20:38.300 回答
0

创建一个做两件事的辅助函数。让您的 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)])
于 2013-07-19T17:08:44.717 回答