如何在Wren上定义一个简单的非方法函数?

时间:2019-05-06 06:12:59

标签: scripting

wren脚本语言http://wren.io/的文档介绍了如何在类中定义方法,但是我想定义一个简单的函数而不是方法。我尝试过:

#! /usr/bin/env wren
square(n) {
        return n * n
}

System.print(square(3))

和此(省略尝试的函数定义以外的部分:

var square= {|n|
        return n * n
}

还有这个

var square= Fn.new {|n|
        return n * n
}

但没有任何效果。

有人建议我如何不借助方法定义而使其工作吗?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:显然我忘记了在函数对象上调用call()方法。这有效:

#! /usr/bin/env wren
var square= Fn.new {|n|
        return n * n
}
System.print(square.call(3))

但是,我很难相信所有用户定义的函数都必须通过在其上显式调用“调用”方法来调用!

我最后一次看到这样的内容,其中必须始终明确地编写“呼叫”的内容是TI-99 / 4a的TI BASIC。

但这大约是35年前! ;-)