私は通過していますRubyプログラミング - 実用的なプログラマーガイドそして、このコードを見つけました:
class SongList
def [](key)
if key.kind_of?(Integer)
return @songs[key]
else
for i in [email protected]
return @songs[i] if key == @songs[i].name
end
end
return nil
end
end
[ ] メソッドの定義がどのように機能するのか分かりません。
キーは [ ] の外側にあるのに、メソッドが呼び出されると [ ] の内側にあるのはなぜですか?
キーは括弧なしでも使えますか?
これを書くにはもっと良い方法があることはわかっていますし、うまく機能する独自の方法を書く方法も知っていますが、この[]メソッドは私を困惑させています...どんな助けでも大歓迎です、ありがとう
ベストアンサー1
これは単なる構文上の糖衣です。特定の構文パターンがメッセージ送信に変換されます。特に
a + b
と同じです
a.+(b)
==
、、、、、、、、、、、、、、、、、、、、およびにも同様!=
の<
こと>
が当てはまります。<=
>=
<=>
===
&
|
*
/
-
%
**
>>
<<
!==
=~
!~
また、
!a
と同じです
a.!
にも同じことが当てはまります~
。
それから、
+a
と同じです
a.+@
にも同じことが当てはまります-
。
プラス、
a.(b)
と同じです
a.call(b)
セッターには特別な構文もあります:
a.foo = b
と同じです
a.foo=(b)
最後に、インデックス作成用の特別な構文があります。
a[b]
と同じです
a.[](b)
そして
a[b] = c
と同じです
a.[]=(b, c)