在OS X上使用Elixir V1.1.1我无法理解Elixir函数定义语法。
给定函数定义:
def foobar(arg1, arg2), do: <<something>> end
似乎在某些情况下,括号后面的逗号是必需的,有时则不是。同样是'do'之后的冒号,同样也就是结束'结束'。我确信我的情况非常复杂,但这似乎是一种编程语言的奇怪设置。
在什么情况下这些元素是必需的/可选的?
答案 0 :(得分:3)
您已将两种形式的方法定义结合在一起 - 较短的单行语法和较长的do
/ end
语法。
如果您使用单行方法,则可以按如下方式编写:
def foobar(foo, bar), do: baz
请注意逗号,而不是end
。
如果你有一个多行方法,语法略有不同:
def foobar(foo, bar) do
foo
bar
end
请注意,没有逗号和end
的展示位置。
这两种类型都在这里描述:http://elixir-lang.org/getting-started/modules.html#named-functions(注意Math.zero?/1
的长格式,以及'函数捕获'标题下的缩写形式)