From: Markus Fischer Date: 2011-06-22T05:37:31+09:00 Subject: [ruby-core:37269] [Ruby 1.9 - Bug #4914] Array#index fails when used in if statement assignment Issue #4914 has been updated by Markus Fischer. It "works" for me if you change the `&&` to `and`; so I think it's a precedence issue you're facing here. I think this blog post here has some good examples which I think directly apply to your case: http://blog.jayfields.com/2007/08/ruby-operator-precedence-of-and-which.html ---------------------------------------- Bug #4914: Array#index fails when used in if statement assignment http://redmine.ruby-lang.org/issues/4914 Author: Benjamin ter Kuile Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] cat /etc/issue: Ubuntu 11.04 rvm -v: rvm 1.6.2 rvm 1.9.2, ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] Also tested with: rvm 1.9.2-head, ruby -v: ruby 1.9.2p274 (2011-06-06 revision 31932) [x86_64-linux] Test code: a = [:a, :b, :c] for k in 'a'..'c' if i = a.index(k.to_sym) && k.to_s =~ /b/ puts i end end for k in 'a'..'c' i = a.index(k.to_sym) if i && k.to_s =~ /b/ puts i end end output: 0 1 expected output: 1 1 -- http://redmine.ruby-lang.org