Julia中的函数定义

时间:2017-09-15 17:10:08

标签: function julia bnf

朱莉娅特别具有功能定义吗?如果是,它的BNF是什么?

例如,它具有带BNF的函数声明和函数调用

{{1}}

1 个答案:

答案 0 :(得分:1)

正如Matt B.在评论中提到的,Julia语法不是无上下文的。

如果<...>是有效的函数调用,那么通常以下是有效的方法定义:

function <...>; (body); end
<...> = (body)

此外,允许在函数调用中添加返回类型注释:

function <...>::ReturnType; (body); end
<...>::ReturnType = (body)

对于短格式和长格式,也允许使用任意数量的where子句,而不是返回类型:

function <...>::ReturnType where T; (body); end
(<...>::ReturnType) where S = (body)
function <...> where T where S; (body); end
<...> where {S, T} = (body)

短格式和长格式都支持某些限定符:

global function <...>; (body); end
local <...> = (body)

请注意,函数调用本身可以有多种形式;例如,每个都是有效的:

x ← y = x + y
function (x ← y)::Int; 10; end