slyme2017/12/15 08:36> foo[bar]はfoo.[](bar)の略記法に過ぎないものです。 なるほど。以下の通りですね https://github.com/ruby/ruby/blob/ruby_2_4/array.c ``` /* * Returns a new array populated with the given objects. * * Array.[]( 1, 'a', /^A/ ) # => [1, "a", /^A/] * Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/] * [ 1, 'a', /^A/ ] # => [1, "a", /^A/] */ ``` では上記のHogeクラスの場合 ``` def [](id) STATUSES[id] end ``` という宣言をしていることから、オーバーライドのような扱いになり `p hoge.[](1)` で参照できるなら `p hoge[1]`も参照可能。 ということであっていますでしょうか? 配列に添え字で参照して、値が帰ってくる。という当たり前の動作が頭から離れず 内部的にどのようなフローで処理されるか、いまいちピンとこないです
maisumakun2017/12/15 09:08Rubyの演算子は、ほとんどがメソッドとして実装されています。 https://docs.ruby-lang.org/ja/latest/doc/spec=2fdef.html#operator 「1 + 2」すら、本質的には「1.+(2)」というメソッド呼び出しです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/15 08:36
2017/12/15 09:08