如何处理碰巧在Ruby中成为关键字的关键字参数?
发布时间:2020-12-17 03:33:09 所属栏目:百科 来源:网络整理
导读:给定以下方法,它接受两个关键字参数begin和end: def make_range(begin: 0,end: -1) # ...end 我可以毫无问题地调用这个方法: make_range(begin: 2,end: 4) 但是在实现方法时我如何使用关键字参数,因为两者都恰好是Ruby keywords? 这显然不起作用: def ma
给定以下方法,它接受两个关键字参数begin和end:
def make_range(begin: 0,end: -1) # ... end 我可以毫无问题地调用这个方法: make_range(begin: 2,end: 4) 但是在实现方法时我如何使用关键字参数,因为两者都恰好是Ruby keywords? 这显然不起作用: def make_range(begin: 0,end: -1) begin..end end 请注意,这只是一个示例,问题适用于所有关键字,而不仅仅是开始和结束. 解决方法
轻松解决方案
请查找其他变量名称. (例如 复杂的解决方案 local_variable_get 你可以使用 def make_range(begin: 0,end: 10) (binding.local_variable_get(:begin)..binding.local_variable_get(:end)) end p make_range(begin: 10,end: 20) #=> 10..20 关键字参数/哈希参数 您也可以使用keyword arguments. def make_range(**params) (params.fetch(:begin,0)..params.fetch(:end,10)) end p make_range #=> 0..10 p make_range(begin: 5) #=> 5..10 p make_range(end: 5) #=> 0..5 p make_range(begin: 10,end: 20) #=> 10..20 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |