1

私のコードは

if @site.Name != ("B.A.P." || "Cir." || "10th")
  do this if part
else
  do this else part
end

if @site.name = "B.A.P"は正常に動作していますが、他の2つは正しく動作していません。また、次の構文をもう1つ使用しました。

if ["B.A.P." , "Cir." , "10th"].include? (@site.Name)

再び同じ問題に直面しています。if条件で論理`または演算子を実装する適切な方法を誰かが私に提案できますか?

4

3 に答える 3

2

2番目のバージョンは機能するはずです

1.9.3p194 :027 > ["B.A.P." , "Cir." , "10th"].include? "Cir."
 => true 
1.9.3p194 :028 > ["B.A.P." , "Cir." , "10th"].include? "10th"
 => true 
1.9.3p194 :029 > ["B.A.P." , "Cir." , "10th"].include? "B.A.P."
 => true 

@site.Nameにターミネータなどがあるかどうかを確認します

あなたの最初のバージョンでは、これが起こることです

1.9.3p194 :033 > ("B.A.P." || "Cir." || "10th")
 => "B.A.P." # always evaluates to first arg

最初のバージョンではこれを使用してください

if @site.Name == "B.A.P." || @site.Name == "Cir." || @site.Name == "10th"

またはもっとルビーっぽい方法で

@site.Name.eql? "B.A.P." or @site.Name.eql? "Cir." or @site.Name.eql? "10th"

配列インクルードバージョンを使用します。:)

于 2012-08-16T10:51:38.170 に答える
1

最初のバージョンは英語で話す方法で機能しますが、ほとんどのプログラミング言語が機能する方法ではありません。代わりに、次のことを行う必要があります。

if @site.Name != "B.A.P." && @site.Name != "Cir." && @site.Name != "10th"

実際にテストして、それらの1つと等しいかどうかを確認@site.Name ている場合、これは2番目のバージョンからのように見えます。

if @site.Name == "B.A.P." || @site.Name == "Cir." || @site.Name == "10th"

私はあなたの2番目のバージョンを好みます。これは完全に有効です。(ここでも、条件がこれら3つの値のいずれかに等しいと仮定し@site.Name ます。)それが機能しない場合は、 (資本化の問題)@site.nameではなく意味している可能性があります。@site.Name

于 2012-08-16T10:53:57.370 に答える
0

あなたのコードは質問を曖昧にします。

最初の部分では、を使用し!=ました。したがって、 「BAP」、「Cir」@site.Name のいずれでもないかどうかを確認したい場合。または「10番目」の場合、2番目の部分は負の形式である必要があります。

unless ["B.A.P." , "Cir." , "10th"].include? (@site.Name)

私はそれを使います。

于 2012-08-16T11:50:53.147 に答える