我有一个定义函数的脚本,后来打算调用该函数,但忘记添加括号,如下所示:
function myfunc()
println("inside myfunc")
end
myfunc # This line is silently ignored. The function isn't invoked and there's no error message.
过了一会儿,我确实发现我漏掉了括号,但由于 Julia 没有给我错误,我想知道该行实际上在做什么?我假设它必须使用 myfunc
语句执行某些操作,但我对 Julia 的了解不够深,无法理解正在发生的情况。
我尝试了 --depwarn=yes
但没有看到 julia
命令行开关来提高警告级别或详细程度。如果存在请告诉我。
对于后台上下文,出现此问题的原因是我正在尝试将 Bash 脚本转换为 Julia,并且有许多位置定义并调用无参数函数,而在 Bash 中则不需要函数名称后面需要括号才能调用它。
该脚本正在从命令行 (julia stub.jl
) 运行,我在 macOS 上使用 Julia 1.0.3。
最佳答案
它不会默默地忽略该函数。在交互式 session 中调用 myfunc
将向您展示会发生什么:调用将函数对象返回到控制台,从而调用 Function
的 show
方法>,显示当前在您的工作区中为该函数定义了多少个方法。
julia> function myfunc()
println("inside myfunc")
end
myfunc (generic function with 1 method)
julia> myfunc
myfunc (generic function with 1 method)
由于您在脚本中调用此函数,因此永远不会调用 show
,因此您看不到任何结果。但它不会出错,因为语法是有效的。
感谢 DNF 对脚本中的内容提供的有用评论。
关于julia - 为什么 Julia 函数名称(不带参数)会被默默忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587345/