From: rubikitch Date: 2006-08-16T01:00:26+09:00 Subject: [ruby-list:42695] Re: in演算子の提案 From: Subject: [ruby-list:42693] in演算子の提案 Date: Wed, 16 Aug 2006 00:51:11 +0900 るびきちです。 > if s in [a, b, c] # if [a, b, c].include?(s) と同義 > しかしinclude?メソッドを用いるときのみ、この順序は逆になります。 > > > if [a, b, c].include?(s) > > > 他の比較とは違って「比較条件」を先に、「変数」を後に書くことになり > 私はこうした書き方に、少なからずストレスを感じます。 同感です。ぼくもつい s から書こうとしてしまいます。 こんなのはどうでしょうか? require 'test/unit' class Object def in(*args) if args.length == 1 args[0].include? self else args.include? self end end end class TestIn < Test::Unit::TestCase def test_multiple_args assert_equal true, 1.in(1,2,3) assert_equal false, 10.in(1,2,3) end def test_array assert_equal true, 1.in([1,2,3]) assert_equal false, 10.in([1,2,3]) end end -- rubikitch http://www.rubyist.net/~rubikitch/