流程控制

if

  1. a = 2 if some_condition
  2. if 1 > 2
  3. 3
  4. else
  5. nil
  6. end
  7. # 三元玩法
  8. a = 1 > 2 ? 3 : 4
  9. a = if 1 > 2 # if作为表达式直接给变量赋值
  10. 3
  11. else
  12. 4
  13. end
  14. if a = some_expression
  15. # here a is not nil
  16. end
  17. if a && b
  18. # here both a and b are guaranteed not to be Nil
  19. end
  20. # if表达式判断对于类和对象的属性无效
  21. # 方法一: 需要先将属性值赋给一个本地变量
  22. if a = @a
  23. # here a can't be nil
  24. end
  25. # 方法二: use `Object#try` found in the standard library
  26. @a.try do |a|
  27. # here a can't be nil
  28. end
  29. if var.is_a?(...) # 判断var的类型是否是参数指定的类型
  30. if a.is_a(Number) && if a.is_a(String)
  31. if var.responds_to?(...) # 判断var是否具有参数指定的方法
  32. if a.responds_to(:abs )
  33. if var.nil? # 判断var是否为空
  34. if !
  35. if !b.is_a?(Int32)

unless

同if相反

  1. unless some_condition
  2. then_expression
  3. else
  4. else_expression
  5. end

case

…略,请自行参阅

while

支持next ,break进行控制

  1. while some_condition
  2. if condition1
  3. next
  4. end
  5. do_this
  6. if condition
  7. break
  8. end
  9. end

util

…略

&& , ||

可用于链式操作

  1. some_exp1 || some_exp2
  2. some_exp1 && some_exp2