这段代码看不懂
a = "test" a.freeze a << "a" # 修改 a 会出现 TypeError
"<<"不是向数组中增加元素用的么,这里是什么意思啊?
p.s. 有没有 ruby 语法的速查手册啊,直接按字母顺序排的,像词典一样?
线上的: http://api.rubyonrails.org/ 本地的: http://railsapi.com/
手册:http://ruby-doc.org/ 你都冻结了a了,还怎么修改? a.freeze #冻结参数 <<的意思是,例如:
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,也挺方便使用和查询的。
#6 楼 @skandhas 谢谢!
点击这里直达 String#<<
http://www.ruby-doc.org/core-2.0/String.html#method-i-3C-3C