2009-05-17 41 views

Trả lời

15

Sử dụng *rest. đây là một chút đẹp tutorial.

22

Sử dụng các nhà điều hành splat *

def foo(a,b,c,*others) 
    # this function has at least three arguments, 
    # but might have more 
    puts a 
    puts b 
    puts c 
    puts others.join(',') 
end 
foo(1,2,3,4,5,6,7,8,9) 
# prints: 
# 1 
# 2 
# 3 
# 4,5,6,7,8,9 
6

(Nếu tôi có thể thêm nhận xét vào câu trả lời được chấp nhận, tôi sẽ làm, nhưng tôi không có đủ điểm.)

Cảnh báo: Cẩn thận khi thực hiện việc này cho các phương pháp xử lý dữ liệu chung. Đó là một đoạn đường cú pháp tuyệt vời, nhưng có là giới hạn số đối với số đối số bạn có thể chuyển sang phương thức trước khi bạn nhận được SystemStackError. Tôi đã đạt đến giới hạn đó bằng cách sử dụng redis.mapped_mget *keys. Ngoài ra, giới hạn sẽ thay đổi tùy thuộc vào nơi bạn sử dụng toán tử splat. Ví dụ, chạy pry cục bộ, tôi có thể chia mảng hơn 130.000 phần tử thành một phương thức. Tuy nhiên, chạy trong một tác nhân Celluloid, giới hạn đó có thể nhỏ hơn 16.000 phần tử.

Các vấn đề liên quan