当前位置:  开发笔记 > 后端 > 正文

如何处理碰巧在Ruby中成为关键字的关键字参数?

如何解决《如何处理碰巧在Ruby中成为关键字的关键字参数?》经验,为你挑选了1个好方法。

给出以下方法,它接受两个关键字参数beginend:

def make_range(begin: 0, end: -1)
  # ...
end

我可以毫无问题地调用这个方法:

make_range(begin: 2, end: 4)

但是在实现方法时我如何使用关键字参数,因为两者都恰好是Ruby 关键字?

这显然不起作用:

def make_range(begin: 0, end: -1)
  begin..end
end

请注意,这只是一个示例,该问题适用于所有关键字,而不仅仅是beginend.



1> Eric Duminil..:
轻松解决方案

请查找其他变量名称.(例如minmaxrange_beginrange_end)

复杂的解决方案

local_variable_get

你可以使用binding.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

关键字参数/哈希参数

您还可以使用关键字参数.

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

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有