2008-12-28 34 views
6

Khi tôi đọc mã nguồn của Beast, tôi thấy rất nhiều mã như thế này:[] phương pháp của Ruby Chuỗi

<%= 'Password'[:password_title] %> 

Nó có vẻ như một cuộc gọi đến [] phương pháp với Symbol như tham số đầu vào cho một String với tôi, nhưng tôi không tìm thấy kiểu tham số của phương thức String [] trong API ruby. Điều này có nghĩa là gì? cảm ơn trước.

Trả lời

11

Đó là một phương pháp được thêm vào bởi trình cắm thêm "Gibberish" mà Beast sử dụng, để quốc tế hóa. Hãy nhớ rằng, các lớp trong Ruby được mở, vì vậy bạn không thể luôn luôn dựa vào API chuẩn trong các trường hợp như thế này!

1
str[fixnum] => fixnum or nil 
str[fixnum, fixnum] => new_str or nil 
str[range] => new_str or nil 
str[regexp] => new_str or nil 
str[regexp, fixnum] => new_str or nil 
str[other_str] => new_str or nil 

Đây là những gì tôi tìm thấy. Nếu biểu tượng ở đây bằng với Chuỗi, tôi vẫn không hiểu ý nghĩa của mã. Tại sao không chỉ cần sử dụng:

<%= 'password' %> 

hoặc thậm chí:

password 
+0

Vâng, có một chút lạ. Tôi sẽ xóa câu trả lời của tôi. Tôi không nghĩ trước khi tôi cung cấp nó. – PEZ

+0

Cảm ơn bạn đã chỉnh sửa, John :) – eric2323223

4

Trong nguồn con thú, hãy kiểm tra vô nghia cắm nơi lớp String đã được sửa đổi để chấp nhận các biểu tượng trong khung chức năng.

Lớp chuỗi của chính nó không làm bất cứ điều gì hợp lý bằng cách áp dụng phương pháp str[symbol].