【问题标题】:Overload method with named arguments in Crystal?Crystal中带有命名参数的重载方法?
【发布时间】:2019-12-19 18:18:16
【问题描述】:

如果参数名称相同,是否可以重载方法?

def inspect(url : String); inspect_url(url) end
def inspect(path : String); inspect_path(path) end

# Always will be called with explicit names
inspect url: "some url"
inspect path: "some path"

# Never without names, this form is not needed 
# and never will be used
inspect "something"

【问题讨论】:

    标签: crystal-lang


    【解决方案1】:

    splat 参数后的参数只能作为命名参数传递。典型用法是有一个未命名的 splat 参数,后跟命名参数。

    def inspect(*, url : String)
      "inspect url"
    end
    
    def inspect(*, path : String)
      "inspect path"
    end
    
    inspect url: "some url"   # => "inspect url"
    inspect path: "some path" # => "inspect path"
    
    inspect "something" # Invalid number of arguments
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2021-10-26
      • 2023-03-28
      相关资源
      最近更新 更多