“别的”里面的“elsif”和“if”之间的区别

时间:2015-01-20 03:15:23

标签: ruby

class Player
  def play_turn(warrior)
    if warrior.feel.enemy?
       warrior.attack!
        else
          if warrior.health < 20 && !taking_damage?(warrior)
            warrior.rest!
      else
        warrior.walk!
      end
    end
    @health = warrior.health
  end


  def taking_damage?(warrior)
    warrior.health < @health
  end

end

如果出现&#34;如果&#34;这是什么意思?在&#34;否则&#34;喜欢上面的代码?它与&#34; elsif&#34;有什么不同?如在

class Player
  def play_turn(warrior)
   if warrior.feel.enemy?
     warrior.walk!
   elsif warrior.health <= 10
   else warrior.attack!
   end
end 

据我所知&#34; elsif&#34;用于附加条件,我很难理解&#34;如果在其他内部&#34;第一个示例代码中的模式。我将不胜感激任何帮助!

上面的第一个代码示例来自https://gist.github.com/rantingsonrails/3035155

1 个答案:

答案 0 :(得分:0)

如果在else内部意味着,只有当第一个if不为真时,才继续这个if。

在上述代码的情况下,只有在附近没有敌人时才会检查健康状况是否小于等等。

在else和else之间没有区别,除了elsif不需要额外的缩进,因此节省了空间。