Làm cách nào để tạo một hàm Ruby không có số tham số rõ ràng?Chức năng Ruby với số tham số không giới hạn
Cần làm rõ thêm?
Làm cách nào để tạo một hàm Ruby không có số tham số rõ ràng?Chức năng Ruby với số tham số không giới hạn
Cần làm rõ thêm?
Sử dụng *rest
. đây là một chút đẹp tutorial.
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
Đây là một bài viết về đề tài này:
www.misuse.org/science/2008/01/30/passing-multiple-arguments-in-ruby-is-your-friend
Cung cấp cho một số ví dụ đẹp lăn và unrolling thông số của bạn sử dụng "*"
(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ử.