Ruby类实例化参数语法错误求助:添加table_name时报错
问题排查:Ruby关键字参数简写语法不兼容
这个语法错误的根源很明确——你正在使用的Ruby版本低于2.7,而你调用Test.new时用了Ruby 2.7才正式引入的「关键字参数简写」语法(就是logger:, table_name:这种写法),低版本Ruby无法识别这种简写,直接判定为语法错误。
给你两个解决方向:
兼容低版本的写法(推荐,无需升级环境):
把简写的关键字参数改成完整的键值对形式,这是所有支持关键字参数的Ruby版本(2.1及以上)都能正常运行的写法:discovery = Test.new(logger: logger, table_name: table_name)升级Ruby版本:
如果你的运行环境允许,把Ruby升级到2.7或更高版本,这样就能直接使用你原来的简写语法了。
额外验证小技巧:你可以在环境里执行ruby -v查看当前Ruby版本,如果显示是2.6.x或更低,就完全符合这个问题的触发条件。另外要说明的是,你类定义里的def initialize(logger:, table_name:)这种必填关键字参数的写法是没问题的(Ruby 2.1+就支持),问题只出在实例化时的简写调用上。
内容的提问来源于stack exchange,提问作者Jason Parmar
相关产品推荐
相关产品推荐

