以下是我认为是Julia中多分派最简单的例子 - 它是一个名为adhoc.jl的文件的全部内容(8行)。
f = function(x::String)
println("Called first version of f")
end
f = function(x::Float64)
println("Called second version of f")
end
f("x")
f(1.0)
当我运行以下代码(通过include("Adhoc.jl")
)时,Julia会报错:
ERROR: LoadError: MethodError: no method matching
(::getfield(Main, Symbol("##17#18")))(::String)
截图在这里
如果我将第二个f
实例更改为g
,则可以正常工作,但这不再利用多重分派。为什么我无法使用多重分派?
myfunc = function(x,y,z)
更改为语法function myfunc(x,y,z)
。如果其他人也遇到同样的困境,我使用的正则表达式是:([a-zA-Z_][a-zA-Z0-9_!]*)\s*=\s*function\(
替换字符串为:function $1(
- Philip Swannell