2010-10-06 12 views
9

Bir işlev için varsayılan bir argümana sahip olmak istediğinizde, ancak başka bir parametreye/başka bir değişkene bağımlı olan Ruby'deki deyim nedir? Örneğin, Python, bir örnek: İşteruby ​​varsayılan değişken idiom

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 temin değilse, o len(a) olmalıdır. Varsayılan argüman listesinde len(a) yapamazsınız, böylece bir sentinel değeri atarsınız, None ve bunun için işaretleyin. Ruby'de buna eşdeğer ne olurdu?

cevap

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

Döngününüz varsa ne olur? foo (a = b, b = a) 'dır. ya da sadece daha önce tanımlanmış varslara başvurabilir misiniz? – Claudiu

+5

Daha önce gelmelidir – horseyguy