初学红宝石流量控制

elw*_*dly 0 ruby

为什么我对以下代码出错?

def test(s)
   tester = s.split(//)
   for char in tester
       if char != 1 or char != 0
          return false
       end  
   end
   return true
end 

puts test("11111000")
# => false
Run Code Online (Sandbox Code Playgroud)

提前谢谢你的回答!

saw*_*awa 5

这是因为char != 1 or char != 0永远true.无论char是,它不能同时10在同一时间.


以下内容仅基于对OP代码目的的猜测.如果目的是检查是否s包含任何内容,"1"或者"0",那么,我会这样做:

s !~ /[^01]/
Run Code Online (Sandbox Code Playgroud)

  • "0"和"0"也不是一回事,所以这段代码首先不起作用. (2认同)