在这段代码中,下划线代表什么

时间:2017-04-02 12:07:56

标签: scheme racket

以下代码如何运作?此代码来自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 个答案:

答案 0 :(得分:1)

lambda可以有一个标识符列表作为参数名称(例如(lambda (a b c) the-body ))或单个标识符(例如(lambda args the-body)),然后它将保存所有参数的列表。

赋予build-list的函数需要一个参数(当前索引)。当您不打算使用其值时,通常会将参数命名为_

因此,由于我们在创建随机列表时并不关心当前索引,因此该参数名为_。这也可以写成(lambda (_),但由于我们不关心任何(一个)参数,我们也可以写(lambda _