2016-08-18 34 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和朋友,作爲一個宏,確實比程序版本具有更多的功能,例如可能有更多的累加器和停止條件。