RX0332

领域: 解析

错误消息

%s:动作不是值,所以 fn 永远不能被绑定、传递或存储(%s)

消息中的 %s 表示引擎抛出错误时填入的具体内容。

小故事

先问一个哲学问题:函数,是一个东西,还是一个动作?在 rush 里,答案很明确:函数是动作,不是东西。动作是被调用的,不是被拿在手里、传来传去的。所以你不能写 f 等于 dbl,把函数绑给一个名字;也不能把函数当参数传,不能把它放进映射里,更不能拿它当接收者。你写了这样的东西,引擎在解析时就会拦下,并告诉你这条法则。注意,它没有说名字找不到,因为名字找得到,只是它是个动词,不能当值用。怎么改?直接调用它,把它的答案传出去;如果你想在几个动作里选一个,就写一个流,让每个分支按名字去调用各自的函数。记住:函数是动作,你去调用它,而不是拿着它。

文本来自 Rush 引擎的错误目录。