Идиома аргумента по умолчанию в 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?


person Claudiu    schedule 06.10.2010    source источник


Ответы (1)


person    schedule
comment
что произойдет, если у вас есть петля? def foo(a=b, b=a). или вы можете ссылаться только на vars, определенные ранее? - person Claudiu; 06.10.2010