【问题标题】:Elixir - What is syntax for function definitions?Elixir - 函数定义的语法是什么?
【发布时间】:2015-11-30 06:08:27
【问题描述】:

在 OS X 上使用 Elixir V1.1.1 我无法理解 Elixir 函数定义语法。

给定一个函数定义:

def foobar(arg1, arg2), do: <<something>> end

似乎在某些情况下括号后的逗号是必需的,而其他时候则不是。同样,在“do”之后的冒号和结束的“end”也是如此。我确信我把情况复杂化了,但这对于编程语言来说似乎是一种奇怪的设置。

在什么情况下这些元素是必需的/可选的?

【问题讨论】:

    标签: elixir


    【解决方案1】:

    您在那里组合了两种形式的方法定义 - 较短的单行语法和较长的 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 的长格式,以及“函数捕获”标题下的短格式)

    【讨论】:

    • 遗憾的是,Elixir 语法似乎几乎完全由示例指定,而不是使用正式的语法定义语言。哦,有点 BNF,甚至是铁路范式:-)
    • @Andy 它是开源的。我相信他们会欢迎一份说明 BNF 语法的文档。
    • 一个很好的观点。我的圣诞假期快到了,也许我会尝试一下。
    • 函数上下文中完全不需要“end”,尝试清理它们并再次阅读代码,确实更干净美观。
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多