小编Mik*_*son的帖子

Julia @evalpoly宏与varargs

我正在尝试使用Julia的@evalpoly宏.当我手动提供系数时,它可以工作,但我一直无法弄清楚如何通过数组提供这些系数

julia> VERSION
v"0.3.5"

julia> @evalpoly 0.5 1 2 3 4
3.25

julia> c = [1, 2, 3, 4]
4-element Array{Int64,1}: 
 1
 2
 3
 4

julia> @evalpoly 0.5 c
ERROR: BoundsError()

julia> @evalpoly 0.5 c...
ERROR: BoundsError()

julia> @evalpoly(0.5, c...)
ERROR: BoundsError()
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

看到这个问题的好答案后添加

在我玩这些答案之前,我还没有看到过一个微妙的东西.该z参数@evalpoly可以是一个变量,但系数预计将文字

julia> z = 0.5
0.5

julia> @evalpoly z 1 2 3 4
3.25

julia> @evalpoly z c[1] c[2] c[3] c[4]
ERROR: c not defined
Run Code Online (Sandbox Code Playgroud)

查看最后一个命令的扩展输出,可以看出确实是这样的情况,z被分配给扩展中的变量,但系数被字面插入到代码中.

julia> macroexpand(:@evalpoly z c[1] …
Run Code Online (Sandbox Code Playgroud)

julia

12
推荐指数
3
解决办法
685
查看次数

标签 统计

julia ×1