【问题标题】:Elixir type spec for a function with default parameters具有默认参数的函数的 Elixir 类型规范
【发布时间】:2022-02-16 15:41:09
【问题描述】:

我如何为函数编写类型规范,比如说,一个具有默认值的参数?类似于以下内容:

def foo(bar \\ 10) do
  bar
end

会是这样吗:

@spec foo(integer) :: integer

或者会是什么?

谢谢。

【问题讨论】:

    标签: elixir


    【解决方案1】:

    是的。

    我要补充一点,如果您的问题是函数的类型规范是否存在差异,该函数的参数具有默认值,而参数不具有默认值,那么没有区别。

    【讨论】:

      【解决方案2】:

      它按预期工作,因为您实际上定义了两个函数。

      @spec foo(integer) :: integer
      def foo(bar \\ 10) do
        bar
      end
      

      相当于:

      def foo() do
        foo(10)
      end
      
      @spec foo(integer) :: integer
      def foo(bar) do
        bar
      end
      

      所以你基本上得到了两个函数,但其​​中只有一个有@spec

      【讨论】:

        猜你喜欢
        • 2018-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        相关资源
        最近更新 更多