9
Jaki jest idiom w Ruby, jeśli chcesz mieć domyślny argument funkcji, ale taki, który zależy od innego parametru/innej zmiennej? Na przykład w Pythonie, przykładem jest:domyślny argument ruby
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)
Tutaj, jeśli hi
nie jest dostarczany, powinno być len(a)
. Nie możesz wykonać len(a)
na domyślnej liście argumentów, więc przypiszesz jej wartość wartownika, Brak, i sprawdź, czy nie jest. Jaki byłby odpowiednik w Ruby?
co się stanie, jeśli masz pętlę? 'def foo (a = b, b = a)'. czy może odnosić się tylko do zdefiniowanych wcześniej zmiennych? – Claudiu
Musi przyjść wcześniej – horseyguy