7

我在 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)

我使用平方根和映射作为示例,但最终我会将 sqrt(和其他数学过程)传递给另一个过程。有没有办法在不编写包装函数的情况下做到这一点?

4

1 回答 1

5

有计划通过默认启用procvarpragma 并为 C 导入的 procs 制作包装 procvar 来使这项工作默认工作:https ://github.com/nim-lang/Nim/issues/2172

于 2015-04-07T17:24:25.663 回答