朱莉娅:将函数的参数传递给函数

时间:2018-12-20 19:18:54

标签: plot parameter-passing julia

我想知道Julia是否具有轻松内置的功能来传递函数中用于函数的参数?

例如,

我正在使用Gadfly,但我想创建一个可以绘制特定图的函数,比方说,该函数使用已经指出的图进行折线图绘制。

因此,一个可行的例子

using Gadfly, Random
Random.seed!(50)
x = randn(10)
y = 10 * x .+ 2 .+ randn(10)/10
function dummy1(x, y; plotOptionsToPass...)
    plot(x = x, y = y, Geom.point, Geom.line; plotOptionsToPass...)
end

我希望能够传递所有不同类型的Gadfly绘图选项,例如

dummy1(x, y; Theme(panel_fill = nothing))

以便使dummy1函数变成类似

plot(x = x, y = y, Geom.point, Geom.line; Theme(panel_fill = nothing))

无需我实际预先指定Gadfly允许plot()采取的所有类型的选项。

1 个答案:

答案 0 :(得分:1)

不知道要做什么,但是也许可以帮助您了解可以在dummy1中定义一个新函数并返回它。继承的功能将使用较少的参数。 dummy1成为绘图函数“构造函数”。

function dummy1(;plotOptionsToPass...)
    function foo(x, y) 
        plot(x = x, y = y, Geom.point, Geom.line; plotOptionsToPass...)
    end 
    return foo
end 

# create new drawing function
new_artist = dummy1(Theme(panel_fill = nothing))
# draw something
new_artist(x, y)