9
Thành ngữ trong Ruby là gì khi bạn muốn có đối số mặc định cho hàm, nhưng một thuộc tính phụ thuộc vào tham số khác/biến khác? Ví dụ, trong Python, một ví dụ là:ruby đối số mặc định thành ngữ
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)
Ở đây, nếu hi
không được cung cấp, nó phải là len(a)
. Bạn không thể làm len(a)
trong danh sách đối số mặc định, vì vậy bạn chỉ định cho nó giá trị sentinel, None và kiểm tra điều đó. Điều gì tương đương với Ruby?
điều gì sẽ xảy ra nếu bạn có vòng lặp? 'def foo (a = b, b = a)'. hoặc bạn chỉ có thể tham khảo các vars được xác định trước đó? – Claudiu
Phải đến trước – horseyguy