调用generate_municipal_withins报参数数量错误该如何修正语法?
错误原因
你定义的generate_municipal_withins(municipal, radius)是位置参数,要求调用时按顺序传入两个独立的参数值:
- 第一次调用时传入的
municipal: municipal, radius: 70本质是单个Hash对象,相当于只给方法传了1个参数,触发参数数量不匹配的错误 - 后续修改的
generate_municipal_withins(municipal: municipal, 70)写法不符合Ruby语法规范,仍然无法满足位置参数的传参要求
修正方案
方案1:不修改原方法定义,调整调用写法
直接按位置顺序传入两个参数即可,修改后的调用代码如下:
@municipals.each do |municipal| generate_municipal_withins(municipal, 70) end
方案2:保留关键字参数调用习惯,修改方法定义
如果你希望调用时明确标注参数名提升可读性,可以把原方法的参数声明修改为关键字参数格式:
def generate_municipal_withins(municipal:, radius:) # 方法原有内部逻辑不需要修改 end
修改方法定义后,你最开始写的generate_municipal_withins(municipal: municipal, radius: 70)调用代码就可以正常运行。
内容的提问来源于stack exchange,提问作者Jerome
相关产品推荐
相关产品推荐

