2015-06-06 14 views

Trả lời

9
x, (y, z) = 1, *[2, 3] 

Các splat * ở bên phải được mở rộng nội tuyến, do đó, nó tương đương với:

x, (y, z) = 1, 2, 3 

Danh sách trong ngoặc đơn ở phía bên trái được coi là nhiệm vụ lồng nhau, do đó, nó tương đương với:

x = 1 
y, z = 2 

3 bị hủy, trong khi z được gán cho nil.

+1

Câu trả lời hay. Và nếu 'x, (y, z), u = 1, * [2, 3]' thì 'x # => 1; y # => 2; z # => nil; u # => 3'. –

+0

Ok vì vậy splat có ưu tiên hơn các giá trị parantheses và các parantheses xử lý các giá trị trong chúng như một đơn vị duy nhất –

+0

Tôi không nghĩ rằng ưu tiên là có liên quan ở đây, như dấu ngoặc đơn và splat là trên các mặt đối diện của sự bình đẳng. Chìa khóa là tuyên bố của Yu, "Splat' * 'ở bên phải ...". Việc gán song song làm cho 'x' được đặt bằng' 1', '(y, z)' được đặt bằng '2' và cứ tiếp tục, và nếu' (y, z) = 2', thì 'y # => 2; z # => nil'. –

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