新手问题 << 在这里是什么意思?

plasmiq · 2013年02月27日 · 最后由 hisea 回复于 2013年02月27日 · 7287 次阅读

这段代码看不懂

a = "test" a.freeze a << "a" # 修改 a 会出现 TypeError

"<<"不是向数组中增加元素用的么,这里是什么意思啊?

p.s. 有没有 ruby 语法的速查手册啊,直接按字母顺序排的,像词典一样?

手册:http://ruby-doc.org/ 你都冻结了a了,还怎么修改? a.freeze #冻结参数 <<的意思是,例如:

a = "test"
a << "a"
a == "testa" #true

#2 楼 @QueXuQ 这段代码就是为演示 freeze 而设计的。

我的问题不在这里,而是想知道<<是什么意思。我以前学过这个符号是向数组中加入新元素用的,而从 a="test"看 a 不应该是数组,所以我就晕了

字符串添加字符用<<似乎效率比用 + 高,+是调用方法,<<会改变原变量数据。

#3 楼 @plasmiq 这里的 <<String#<<, 它和 String#concat 是一个方法两个名。 Array 也有 Array#<<,其它某些类也有自己的 << 实例方法,具体行为各异。

@plasmiq 关于 Ruby 的文档,除了在线的版本,这里还有对应各个 Ruby 版本 chm 版 doc,也挺方便使用和查询的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号