Ruby 的 string 較恰當的寫法
Published in
2 min readJun 27, 2018
初學者會學到,Ruby 的 string可以用 +
串接的寫法,i.e:
"a" + "b" + "c"
會生成string "abc"
,但假若我們考慮到效能,這樣寫是不恰當的
Ruby每個object都是獨一無二的,儘管是相同內容的string,依然是不同的object,i.e:
[7] pry(main)> "foo"
=> "foo"[8] pry(main)> "bar"
=> "bar"[9] pry(main)> "foo" + "bar"
=> "foobar"[10] pry(main)> "foo".object_id
=> 70235812221440[11] pry(main)> "foo".object_id
=> 70235812140620
可以看到一樣是 foo
,但是它的object_id是不同的,所以他是完全不同的object
讓我們再來看看 ”foo" + "bar"
串出來的string
[12] pry(main)> ("foo" + "bar").object_id
=> 70235811209120[13] pry(main)> ("foo" + "bar").object_id
=> 70235769122160
可以看到 "foo" + "bar"
是串出一個新的string object
假如我們要依照 user id 給 redis 塞 key時會用在 sring 裡取得變數的做法
"string_#{user.id}"
延伸思考:hash 的 key
我們知道 hash 的 key 可以用 string 與 symbol,而我們普遍都用symbol
這是因為,Symbol object 是唯一且獨立的,舉例來說
[14] pry(main)> :foo
=> :foo[15] pry(main)> :foo.object_id
=> 4123868[16] pry(main)> :foo.object_id
=> 4123868