2016-08-18 91 views
-1

https://docs.racket-lang.org/reference/pairs.html#%28def._%28%28lib._racket%2Fprivate%2Fmap..rkt%29._for-each%29%29什么是23的数字?这是什么数字在 - 每个球拍

(for-each (lambda (arg) 
       (printf "Got ~a\n" arg) 
       23) 
      '(1 2 3 4)) 

该代码即使没有'23'也能正常工作。

+1

这是为了说明在示例代码上面的行上写的内容...过程的结果(在本例中为23)被忽略。 – uselpa

+0

我想你应该把这个作为答案,因为这个页面上不清楚。 – rnso

回答

1

这是为了说明在示例代码上面的代码行上写的内容......过程的结果(在本例中为23)被忽略。

因为它被忽略了,所以你可以放任何其他的值,甚至没有像你那样做。

+0

它与简单的'for'有什么区别:(for((item'(1 2 3 4)))(printf“Got〜a \ n”item))?什么是非常特殊的 - 每一个区别于一个简单的'for'循环? – rnso

+1

'for-each'是标准Scheme,'for'程序特定于Racket。在这种情况下,它们是相同的。文档比较'for-each'和'map';它们是相似的,但'map'使用过程的结果,而'for-each'不使用。 – uselpa

+1

'for-each'可以映射到'for','map'可以映射为'for/list' @mso'for'循环并不存在于Scheme中。它们只是递归程序的糖。 – Sylwester

1

for-eachmap的一个特殊版本,完全忽略每个应用程序的返回值,并且不会生成结果列表。如果提供的过程没有副作用,则整个表达式将成为死代码。

for是一种特殊形式,可让您使用不同的语法编写for-each。它的map等价物被称为for/listfor独立于#!racketfor-each存在于所有Scheme语言和方言中。 for和朋友,作为一个宏,确实比程序版本具有更多的功能,例如可能有更多的累加器和停止条件。