ruby 默认参数习惯用法
当您想要一个函数有一个默认参数,但该参数依赖于另一个参数/另一个变量时,Ruby 中的习惯用法是什么?例如,在Python中,一个例子是:
def insort_right(a, x, lo=0, hi=None):
if hi is None:
hi = len(a)
while lo < hi:
mid = (lo+hi)//2
if x < a[mid]: hi = mid
else: lo = mid+1
a.insert(lo, x)
这里,如果没有提供hi
,则应该是len(a)
。您无法在默认参数列表中执行 len(a)
,因此您为其分配一个哨兵值 None,然后进行检查。 Ruby 中的等价物是什么?
What's the idiom in Ruby when you want to have a default argument to a function, but one that is dependent on another parameter / another variable? For example, in Python, an example is:
def insort_right(a, x, lo=0, hi=None):
if hi is None:
hi = len(a)
while lo < hi:
mid = (lo+hi)//2
if x < a[mid]: hi = mid
else: lo = mid+1
a.insert(lo, x)
Here, if hi
is not supplied, it should be len(a)
. You can't do len(a)
in the default argument list, so you assign it a sentinel value, None, and check for that. What would the equivalent be in Ruby?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)