【问题标题】:Ruby - Optional argument wrong matchRuby - 可选参数错误匹配
【发布时间】:2016-10-31 15:30:12
【问题描述】:

我有一个带有以下签名的 ruby​​ 函数:

def botao_adicionar(model, prefix = "/#{model.name.tableize}", callback = nil)

我想在不传递prefix 参数的情况下调用它,因此它采用我上面定义的函数的默认值。所以我这样称呼它:

botao_adicionar(model=ArrendamentoContrato, callback="bind_unidades_consumidoras()")

它将callback 值与prefix 变量相关联。我相信它是按参数的顺序匹配的,但是我在函数调用中明确地调用了参数的名称……这不应该吗?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    你所有的论点都是位置的。这意味着您不能按名称分配它们。

    您似乎想使用关键字参数。它们的正确语法是这样的:

    def botao_adicionar(model, prefix: "/#{model.name.tableize}", callback: nil)
    

    然后

    botao_adicionar(ArrendamentoContrato, callback: "bind_unidades_consumidoras()")
    

    【讨论】:

    • 谢谢!这正是我的意思......不知道这是语法错误。谢谢!
    • @RonanLopes:这不是语法错误。只是语法不适合您尝试做的事情:)
    【解决方案2】:

    您可以使用关键字参数:

    def botao_adicionar(model, prefix: "/#{model.name.tableize}", callback: nil)
    end
    

    用法:

    botao_adicionar(ArrendamentoContrato, callback: "bind_unidades_consumidoras()")
    

    【讨论】:

    • 差不多,但不完全:)
    • @SergioTulentsev 和 model 这是一个错字——谢谢你的注意:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多