2017-04-02 44 views
1

以下代碼如何工作?此代碼來自Racket文檔https://docs.racket-lang.org/plot/renderer2d.html?q=2d%20renderers#%28part.2.D.Line_.Renderers%29(請參閱此頁面上的功能點)。這不是通常的函數定義語句。下劃線在這裏代表什麼?此代碼中的下劃線代表什麼

(define xs (build-list 5 (λ _ (random)))) 

對XS得到以下值:

> xs 
'(0.9520057193043618 0.1339193598495859 0.0019128879992944899 0.7511052254656998 0.4442323053722083) 

回答

1

一個lambda可以具有標識符作爲參數名稱(如(lambda (a b c) the-body))或單個標識符(如(lambda args the-body)的列表,然後將保持所有參數的列表

build-list的函數帶有一個參數(當前索引)當您不打算使用它們的值時,通常給參數_命名

因此,由於我們在創建隨機列表時不關心當前索引,因此該參數名爲_。這也可以寫成(lambda (_),但由於我們不關心任何(一個)參數,所以我們也可以寫(lambda _

+0

這基本上是運行(隨機)20次。它每次獲得的索引都是變化的,並且被忽略。 – rnso