我正在尝试使用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 ×1