3

私は配列と文字列を持っています:

$header = ["Date", "Time", "Site Name", "Computer Name"]
columnName = "esfjk sdhf sdf"

$headerが含まれているかどうかを確認していますcolumnName

return if $header.include? columnName == false

上記の条件は常に を返しtrue、配列に文字列が含まれていなくてもコードは続行します。

$hashがハッシュであり、その中にないrecordNumなどの数値である場合にも同じ問題があり、次のようにします。99999999

return if $hash.has_key? recordNum == false

これが起こる理由はありますか?

4

1 に答える 1

7

優先順位。

$header.include? columnName == false

と解釈されます

$header.include?(columnName == false)

つまり、通常、

$header.include?(false)

これは誤りです。したがって、代わりにやりたいことは次のとおりです。

$header.include?(columnName) == false

しかし、あなたの特定のケースでは、私はこれを行います(ありがとう、アレックス・ウェイン):

return unless $header.include?(columnName)

これを行うと、括弧のない形式に戻ることができます。

return unless $header.include? columnName
于 2013-01-21T00:45:24.723 に答える