Ruby中将哈希作为参数传递给关键字参数方法报错如何解决
错误原因
User.from_google 方法声明的是必填关键字参数,调用时你直接将 from_google_params 返回的 Hash 作为单个位置参数传入,方法无法识别这种传参格式,因此抛出参数不匹配的错误。
修复方案
调用方法时使用 Ruby 的 Hash 关键字解包语法 **,将 Hash 中的键值对拆解为独立的关键字参数传递给方法,修改调用代码即可:
# 原错误代码 # user = User.from_google(from_google_params) # 修改后正确代码 user = User.from_google(**from_google_params)
修改后Hash里的uid、email、full_name、avatar_url四个键值对会自动对应到方法要求的四个必填关键字参数,即可正常运行。
内容的提问来源于stack exchange,提问作者Mark Locklear
相关产品推荐
相关产品推荐

