以下代码如何运作?此代码来自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)
答案 0 :(得分:1)
lambda可以有一个标识符列表作为参数名称(例如(lambda (a b c) the-body )
)或单个标识符(例如(lambda args the-body)
),然后它将保存所有参数的列表。
赋予build-list
的函数需要一个参数(当前索引)。当您不打算使用其值时,通常会将参数命名为_
。
因此,由于我们在创建随机列表时并不关心当前索引,因此该参数名为_
。这也可以写成(lambda (_)
,但由于我们不关心任何(一个)参数,我们也可以写(lambda _
。