1

Rubyは強く型付けされた言語です。したがって、ではtype conversionなく実行されtype castingます。現在、変換には2つのタイプがあります-implicitexplicit

どのルールに基づいて、rubyはどの種類の変換をどのコンテキストに適用するかを決定しますか?

4

1 に答える 1

2

Rubyは「ダック型」であり、強い型でも弱い型でもありません。つまり、変数/オブジェクトの動作は、それが属するクラスに必ずしも依存するのではなく、非常に「ブラインド」であり、実行時に型チェックなしでメソッド呼び出しを行います。それができない場合は、エラーが発生します。

Rubyは、Integer、String、およびその他の内部クラスに対して暗黙的な変換を行います。変換を実行するかどうかは、左側のオペランドによって異なります。例えば、

1 + "2"

左側のオペランドは整数であるため、rubyは数学演算+を実行しようとします。ただし、右のオペランドは文字列であるため、rubyは文字列から整数への変換(強制)を試みます。(それでも失敗しました。それを機能させるには、整数のメソッド+を再定義するか、String#to_iを使用して明示的な変換を行うためにモンキーパッチを呼び出す必要があります)

于 2013-03-09T20:52:38.667 に答える