以下のコードがどのように機能しているのか本当に理解できません...
options.each { |p| p[0] == '-'[0] の場合 壊す 終わり...
本当にこの文字列をチェックしますか? "-[0]"?? または私は何かを逃していますか?
このばかげた質問で申し訳ありませんが、私の心は今ブロックされています...
以下のコードがどのように機能しているのか本当に理解できません...
options.each { |p| p[0] == '-'[0] の場合 壊す 終わり...
本当にこの文字列をチェックしますか? "-[0]"?? または私は何かを逃していますか?
このばかげた質問で申し訳ありませんが、私の心は今ブロックされています...
Ruby 1.8 以下で得られるのは'-'[0]
45 で、これは-
文字の ASCII 値です。p[0]
つまり、これはが 45 に等しいかどうかをチェックしています。
Ruby 1.9 では'-'[0]
が返されるため、ASCII 値が必要な場合は代わり'-'
に使用することをお勧めします。String#ord
if p[0] == '-'.ord
この比較は、バージョン1.8と1.9の間のrubyの異なるstring[index]セマンティクスの回避策のようです。@robbritは、これら2つの動作の違いについて説明しました。比較の左側と右側の両方が[0]を使用して文字列の最初の文字を取得しているため、両方ともASCII序数(1.8)を取得するか、両方とも1文字の長さの文字列(1.9)を取得します。どちらのバージョンでも有効な比較。この動作の差異を回避するためのもう1つの一般的な構成は、範囲の添え字を使用して、いずれかのバージョンのrubyで単一文字の文字列を取得することです。
str[0..0] == '-'