Ruby默认参数惯用法

10

在 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中,相当于什么?

1个回答

13
def foo(a, l = a.size)
end

如果你有一个循环,会发生什么? def foo(a=b, b=a)。或者你只能引用之前定义的变量吗? - Claudiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接