11

Ruby の学習を始めています。インクルードに関するヘルプが必要ですか? 方法。

以下のコードは問題なく動作します。

x = 'ab.c'
if x.include? "." 
    puts 'hello'
else
    puts 'no'
end

しかし、このようにコーディングすると:

x = 'ab.c'
y = 'xyz'
if x.include? "." || y.include? "."
    puts 'hello'
else
    puts 'no'
end

実行するとエラーが発生する場合:

test.rb:3: syntax error, unexpected tSTRING_BEG, expecting keyword_then or ';' o
r '\n'
if x.include? "." || y.include? "."
                                 ^
test.rb:5: syntax error, unexpected keyword_else, expecting end-of-input

これはインクルードだからですか?メソッドにハンドル論理演算子を含めることはできませんか?

ありがとう

4

2 に答える 2

13

他の回答とコメントは正しいです。Ruby の言語解析規則により、引数の周りに括弧を含める必要があるだけです。

if x.include?(".") || y.include?(".")

次のように条件を構成することもできます。これにより、検索する配列を追加するにつれて、より簡単にスケーリングできます。

if [x, y].any? {|array| array.include? "." }
  puts 'hello'
else
  puts 'no'
end

詳細については、を参照Enumerable#any?してください。

于 2013-04-21T00:58:33.513 に答える
11

これは Ruby パーサーが原因で、引数の受け渡しと論理演算子の違いを認識できません。

コードを少し変更して、Ruby パーサーの引数と演算子を区別するだけです。

if x.include?(".") || y.include?(".")
    puts 'hello'
else
    puts 'no'
end
于 2013-04-21T00:52:48.443 に答える