Tôi đang cố gắng để hiểu sự khác biệt giữa *(1..9)
và [*1..9]
splat ruby Hiểu trong phạm vi và mảng
Nếu tôi gán chúng cho các biến họ làm việc cùng một cách
splat1 = *(1..9) # splat1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
splat2 = [*1..9] # splat2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Nhưng mọi thứ trở nên kỳ lạ khi tôi hãy thử sử dụng trực tiếp *(1..9)
và [*1..9]
.
*(1..9).map{|a| a.to_s} # syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'
[*1..9].map{|a| a.to_s} # ["1", "2", "3"...]
Tôi đoán một phần của vấn đề là với tỷ lệ nhà điều hành? Nhưng tôi không chắc chắn những gì đang xảy ra. Tại sao tôi không thể sử dụng *(1..9)
giống như tôi có thể sử dụng [*1..9]
?
'p * (1..9) .map {| a | a.to_s} 'hoạt động ok – Bohdan
Tương tự,' ([* 1..9]). map' sẽ hoạt động tốt; tuy nhiên, tôi nghĩ rằng phương pháp 'to_a' rõ ràng là rõ ràng hơn và về cơ bản giống như súc tích. – maerics