&&を使った際の =~演算子 と match?メソッドの違い
aa = "abc333333"
bb = "333abc333333"
puts aa =~ /abc/ && bb =~ /abc/
puts aa =~ /abc/ && bb =~ /^abc/
puts bb =~ /^abc/ && aa =~ /xxx/
puts aa.match?(/abc/) && bb.match?(/abc/)
puts aa.match?(/abc/) && bb.match?(/^abc/)
puts bb.match?(/^abc/) && aa.match?(/xxx/)
このようにコードを書いてみた。すると
$ ruby practice.rb
3
true
false
false
このように出力された
なぜ
puts aa =~ /abc/ && bb =~ /abc/
は3と出力されるのだろうか
ここで
aa = "abc333333"
bb = "333abc333333"
puts aa =~ /abc/ && bb =~ /abc/
puts aa =~ /abc/ || bb =~ /abc/
こうコードを書いてみた。
すると
i$ ruby practice.rb
3
0
と出力された
どうやら && の方では数字が大きい方、 || の方では数字が小さい方が出力されるらしい。
ここでif文を使ってみてどの場合がtrueンビなるのかを確かめてみた
aa = "abc333333"
bb = "333abc333333"
puts aa =~ /abc/ && bb =~ /abc/
puts aa =~ /abc/ || bb =~ /abc/
if aa =~ /abc/ && bb =~ /abc/
puts "hello"
else
puts "miss"
end
if aa =~ /abc/ || bb =~ /abc/
puts "hello"
else
puts "miss"
end
if aa =~ /abc/ && bb =~ /^abc/
puts "hello"
else
puts "miss"
end
すると
$ ruby practice.rb
3
0
hello
hello
miss
と出力された。
どうやら何か数字が出力さえされていればtrue扱いになるらしい