Yve*_*ves 1 types function optional-arguments julia
这是朱莉娅的文档。
它表示我们可以为 Julia 的函数设置可选参数。例如,
function parse(type, num, base=10)
###
end
Run Code Online (Sandbox Code Playgroud)
parse然后我们可以这样调用该函数:
parse(Int,"12",3)
parse(Int,"12")
Run Code Online (Sandbox Code Playgroud)
我已经测试过它并且确实有效。
现在我想对类型中的函数做同样的事情。这是一个例子,
type MyTest
testShow::Function
function MyTest()
this = new()
this.testShow = function(p1, p2 = 1, p3 = 2)
end
return this
end
end
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
错误:LoadError:语法:“p2=1”不是有效的函数参数名称
您似乎试图模仿其他面向对象语言(例如Python)做事的方式。然而,这不是 Julia 的工作方式:方法(函数)并不存在于 Julia 的类型内部。
相反,方法存在于类型之外。例如:
type MyTest
value::Int
end
function my_show(x::MyTest, p1, p2=1, p3=2)
x.value * p1 * p2 * p3
end
x = MyTest(10)
println(my_show(x, 3))
println(my_show(x, 3, 3, 3))
Run Code Online (Sandbox Code Playgroud)
这是与其他语言不同的范式,尝试强迫 Julia 像其他语言一样运行是没有意义的。julia-users 邮件列表上有很多关于此的讨论。