在nim中传递函数

时间:2015-04-07 16:18:32

标签: functional-programming parameter-passing nim nimrod

我在Nim(版本0.10.2)中传递数学函数(procs)时遇到问题。

import math

var s1 = @[1.1, 1.2, 1.3, 1.4]
var s2 = map(s1, math.sqrt)

我收到错误

Error: 'sqrt' cannot be passed to a procvar

如果我为sqrt编写一个包装函数,它就可以了。

proc fxn(x: float): float = math.sqrt(x)
var s2 = map(s1, fxn)

我使用平方根和map作为示例,但最终我将把sqrt(和其他数学过程)传递给另一个proc。有没有办法在不编写包装函数的情况下执行此操作?

1 个答案:

答案 0 :(得分:3)

默认情况下,计划默认启用此工作,默认情况下启用procvar编译指示,并为C导入的触发器创建包装procvar:https://github.com/nim-lang/Nim/issues/2172