2009-06-09 43 views
16

Tôi đang làm việc theo cách của mình qua Head First Rails và tôi tiếp tục thấy =>. Đó là trong các tuyến đường:Ruby on Rails: biểu tượng => có nghĩa là gì?

map.connect '/marmots/new', controller=>'marmots', :action=>'new'

Đó là trong partials render:

render :partial=>"new_marmot"

Đó là trong các tùy chọn cho các liên kết:

<%= link_to 'Destroy', marmot, :confirm=>'Are you sure?', :method=>:delete %>

Về cơ bản, => dường như có nghĩa ' bằng, 'nhưng nếu có, tại sao không chỉ sử dụng bình đẳng s dấu? Nó giống như 'gửi đến?'

Bạn phát âm như thế nào => và bạn hiểu điều đó nghĩa là gì? Tôi có thể nhận được bằng mà không biết điều này, nhưng nó lỗi tôi.

+1

Thấy câu hỏi này 3 năm sau khiến tôi cười! Tôi chắc rằng trước đây tôi đã từng thấy băm Ruby, nhưng có lẽ tôi đã không thấy các ví dụ bên ngoài Rails, nơi bạn bỏ qua cả dấu ngoặc đơn của một cuộc gọi phương thức và các dấu ngoặc ôm xung quanh một đối số băm cuối cùng, vì vậy nó trông giống như ma thuật. –

Trả lời

8

gọi hàm đầu tiên của bạn là một phím tắt cho

map.connect('/marmots/new', {:controller=>'marmots', :action=>'new'}) 

nơi {} là một Hash-đen. Đối số thứ hai của phương thức kết nối của ánh xạ đối tượng là đối tượng của lớp Hash với hai khóa: controller và: action (cả hai đều là literals của lớp Symbol) có giá trị tương ứng là hai marmots '' và 'new'.

EDIT: Tôi gọi nó là "mũi tên" hoặc "ánh xạ tới".

+0

Có an toàn khi nói rằng bất cứ khi nào tôi nhìn thấy mũi tên, tôi thực sự đang tạo một băm, ngay cả khi {} bị bỏ qua? –

+0

Có đối với các tham số trong các cuộc gọi phương thức, không nói chung (nếu bạn bắt ngoại lệ với giải cứu, toán tử "=>" cũng được sử dụng). –

18

Tôi đã nghe nói nó thường được gọi là "tên lửa băm". Nó là toán tử gán được sử dụng với băm trong ruby. Vì vậy, nếu bạn có một băm và muốn gán một giá trị cho một chìa khóa (thường là một nghĩa đen), sử dụng

{key1 => value1, key2 => value2} 

Rails, và mã Ruby khác, thường vượt qua băm như tham số cho phương pháp để đạt được hiệu quả tương tự như tên đối số bằng các ngôn ngữ khác như Python.

object.method({:param1 => value1, :param2 => value2}) 

EDIT: Khi đọc, tôi sử dụng "được" làm động từ, ví dụ: param1 nhận giá trị1, v.v.

+0

tôi thích bit về các đối số được đặt tên. cảm ơn bạn đã phản hồi rõ ràng –

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