2012-08-29 29 views
5

Đây là điều tôi thấy mình thỉnh thoảng muốn làm. Nói rằng tôi có một danh sách các đối số. Trong Lisp, tôi có thể đi nhưRuby: làm thế nào để ghép một mảng vào một danh sách Lisp-style?

`(imaginary-function ,@args) 

để gọi hàm với mảng được chuyển từ một phần tử sang số lượng đối số phù hợp.

Có chức năng tương tự trong Ruby không? Hay tôi chỉ sử dụng một thành ngữ hoàn toàn sai ở đây?

+0

Trong Lisp đó không phải là cuộc gọi hàm, cũng không phải mảng. Nó chỉ là một danh sách với một danh sách khác nối vào. –

Trả lời

9

Có! Nó được gọi là toán tử splat.

a = [1, 44] 
p(*a) 
+0

'puts (a)' và 'puts (* a)' có cùng một đầu ra – Stefan

+0

Vâng, không phải là một ví dụ tuyệt vời. Tôi sẽ đổi nó thành "p (* a)". –

+0

Hoàn hảo, đây chính xác là những gì tôi đang tìm kiếm. Có vẻ hơi kỳ lạ một cách cú pháp rằng bạn sử dụng cùng một toán tử để thu thập (* args) trong một hàm, nhưng nó có ý nghĩa một cách ngẫu nhiên mà tôi đoán. – HaskellMan

3

Đây là toán tử kết nối: function(*list)

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