どうすればこのようなことができますか? または、常に IF を使用する必要がありますか?
ar = [["a","b"],["c"],["d","e"]]
x = "b"
case x
when ar[0].include?(x)
puts "do something"
when ar[1].include?(x)
puts "do else"
when ar[2].include?(x)
puts "do a 3rd thing"
end
ルビー1.8.7を使用しています
どうすればこのようなことができますか? または、常に IF を使用する必要がありますか?
ar = [["a","b"],["c"],["d","e"]]
x = "b"
case x
when ar[0].include?(x)
puts "do something"
when ar[1].include?(x)
puts "do else"
when ar[2].include?(x)
puts "do a 3rd thing"
end
ルビー1.8.7を使用しています
可能であるだけでなく、簡単です。定数配列の場合:
#!/usr/bin/ruby1.8
x = "a"
case x
when 'a', 'b'
puts "do something" # => do something
when 'c'
puts "do else"
when 'd', 'e'
puts "do a 3rd thing"
end
または、配列が一定でない場合:
#!/usr/bin/ruby1.8
ar = [["a","b"],["c"],["d","e"]]
x = 'd'
case x
when *ar[0]
puts "do something"
when *ar[1]
puts "do else"
when *ar[2]
puts "do a 3rd thing" # => do a 3rd thing
end
コードを少し再構築してやってみませんか
ar = [["a","b"],["c"],["d","e"]]
x = "b"
i = (0...ar.length).find {|i| ar[i].include?(x)}
case i
when 0
puts "do something"
when 1
puts "do else"
when 2
puts "do a 3rd thing"
end