Vì vậy, tôi vừa học được rằng thay vì viết những thứ như:Ruby cố gắng nắm bắt một ký hiệu mới. (Tiêm (:) vs chọn (&: chẵn); tại sao người ta có &?)
[1,2,3,4,5].inject {|x,y| x + y} => 15
tôi có thể viết
[1,2,3,4,5].inject(:+) => 15
tôi cũng học được rằng thay vì viết
[1,2,3,4,5].select {|x| x.even?} => [2,4]
tôi có thể viết
[1,2,3,4,5].select(&:even?) => [2,4]
Câu hỏi của tôi là lý do tại sao một (chọn) sử dụng &
và một (tiêm) khác thì không. Tôi chắc chắn rằng :
là vì even?
và +
được xử lý ở các ký hiệu, nhưng tôi muốn làm rõ lý do tại sao &
được sử dụng trong một và tại sao sử dụng :
.
Ngoài ra, tôi biết rằng tôi có thể thực hiện các ký hiệu này trên nhiều hơn chỉ là inject
và select
.
Rất cám ơn!
Tôi hiểu. Rất, rất thú vị! Trong Ruby, tôi thấy rằng rất nhiều điều rất đơn giản để làm, như tôi đã làm với lựa chọn của tôi. Bạn đã đi tiếp và viết '{| elem | elem.send: even?} 'Đây có phải là bản chất khối của tôi đang làm gì trong nền không? Thay đổi chính nó thành định dạng đó và sau đó thực hiện bất kỳ tính toán nào nó có nghĩa là phải làm gì? Có rất nhiều cách khác nhau để làm mọi thứ trong Ruby. Tôi tò mò. – David
@David: vâng, đó là những gì 'select (&: even?)' Làm theo mui xe. –
@ David không quên chấp nhận câu trả lời, nếu nó thực sự trả lời câu hỏi! – vgoff