Ruby String的[]方法

时间:2008-12-28 17:07:01

标签: ruby-on-rails ruby string monkeypatching

当我阅读Beast的源代码时,我发现了很多这样的代码:

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

看起来像是调用[]方法,将Symbol作为String的输入参数给我,但我没有在ruby API中找到String []方法的这种类型的参数。这是什么意思? 提前谢谢。

3 个答案:

答案 0 :(得分:11)

这是Beast用于“国际化”的“Gibberish”插件添加的方法。请记住,Ruby中的类是开放的,因此在这种情况下,您不能总是依赖标准API!

答案 1 :(得分:4)

在beast源代码中,查看正在修改String类的乱码插件,以接受括号函数中的符号。

通过应用str[symbol]方法,String类本身不会做任何合理的事情。

答案 2 :(得分: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

这些是我发现的。如果这里的符号等于String,我仍然不明白代码的含义。为什么不简单地使用:

<%= 'password' %>

甚至:

password