Ruby, Railsもろもろ

  • Rails, String#classifyでテーブル名の表記からクラス名の表記に変換できる。
  • Rails, String#constantizeで文字列を同じ名前の定数に変換できる。
    • クラスやモジュールも定数の一種なのでconstantizeで取得できる。(Rubyの言語仕様知らなさ過ぎる…。)
> HOGE = 100
> "HOGE".class # => String
> "HOGE".constantize # => 100
> "HOGE".constantize.class # => Fixnum

> class Fuga ; end
> "Fuga".constantize # => Fuga
> "Fuga".constantize.class # => Class

> module Piyo ;end
> "Piyo".constantize # => Piyo
> "Piyo".constantize.class # => Module
  • RubyでEnumerable#group_byってのがある。
  • 多重代入について
a,b,c = [1,2,3]
p a,b,c # => 1,2,3

a,b,c,d = [1,2,3],4
p a,b,c,d # => [1,2,3],4,nil,nil

a,b,c,d = *[1,2,3],4
p a,b,c,d # => 1,2,3,4

(a,b,c),d = [1,2,3],4
p a,b,c,d # => 1,2,3,4

4つ目の知らんかった。"( )"で括ることで多重代入であることを明示できるのか。