julia - 为什么 Julia 函数名称(不带参数)会被默默忽略?

标签 julia

我有一个定义函数的脚本,后来打算调用该函数,但忘记添加括号,如下所示:

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 将向您展示会发生什么:调用将函数对象返回到控制台,从而调用 Functionshow 方法>,显示当前在您的工作区中为该函数定义了多少个方法。

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/

相关文章:

regex - 如何仅在字符串的开头替换重复字符/单词的模式?

c++ - 使用Visual Studio在C++中嵌入Julia

matrix - 如何制作 View 下降尺寸?

performance - 从核苷酸序列生成 kmer 计数向量的最快方法 (Julia)

Julia 元编程 : Function for Mathematical Series

macros - 可以使用 Julia 宏来生成基于特定功能实现的代码吗?

julia - Julia Flux 梯度中的空元组函数的语法是什么?

list - 如何列出特定 Julia 函数的所有重载?

julia - not 运算符 (!) 不适用于数组广播

macros - Julia:如何在函数内创建与输入变量匹配的符号?