Như mọi người đề cập, đó là một "splat". Tìm kiếm cú pháp Ruby là không thể, và tôi đã hỏi điều này trong các câu hỏi khác. Câu trả lời cho phần đó của câu hỏi là bạn tìm kiếm trên
asterisk in ruby syntax
trong Google. Google ở đó cho bạn, chỉ cần đặt những gì bạn nhìn thấy thành từ.
Anyhoo, giống như rất nhiều mã Ruby, mã đó khá dày đặc. Các
line.split(/=|;/)
làm cho một mảng các phần tử SIX , first_name, mickey, last_name, mouse, country, usa
. Sau đó, splat được sử dụng để biến nó thành Hash. Bây giờ người Ruby luôn gửi cho bạn xem phương thức Splat, vì mọi thứ đều được phơi bày trong Ruby. Tôi không biết nó ở đâu, nhưng một khi bạn đã có nó, bạn sẽ thấy rằng nó chạy for
qua mảng và xây dựng hàm băm.
Bạn sẽ tìm mã trong tài liệu cốt lõi . Nếu bạn không thể tìm thấy nó (tôi không thể), bạn sẽ cố gắng viết một số mã như thế này (hoạt động, nhưng KHÔNG phải là mã giống như Ruby):
line = "first_name=mickey;last_name=mouse;country=usa"
presplat = line.split(/=|;/)
splat = Hash.new
for i in (0..presplat.length-1)
splat[presplat[i]] = presplat[i+1] if i%2==0
end
puts splat["first_name"]
và sau đó, băng đảng Ruby sẽ có thể cho bạn biết lý do tại sao mã của bạn là ngớ ngẩn, xấu hoặc chỉ đơn giản là sai.
Nếu bạn đã đọc đến đây, hãy đọc tài liệu Hash để khởi tạo.
Về cơ bản, hàm băm được khởi tạo với một số đối số sẽ tạo chúng dưới dạng cặp giá trị khóa:
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
Vì vậy, trong ví dụ của bạn, điều này sẽ dẫn đến Hash sau:
{"first_name"=>"mickey", "last_name"=>"mouse", "county"=>"usa"}
a,b,*c = d,e,f,*g
đặt a = d, b = e và c = [f, g0, g1, g2, ..., gn], trong đó g = [g0, g1, g2, ..., gn]