If 与 Unless 修饰符

你可能还记得第 5 章中提到的 while 循环的替代语法。替换这样的写法:

  1. while tired do sleep end

…我们可以这样写:

  1. sleep while tired

这种将 while 关键字放在循环代码和测试条件之间的替代语法称为 ‘while 修饰符’(while modifier)。事实上,Ruby 也提供了 ifunless 修饰符。这是一些示例:

if_unless_mod.rb
  1. sleep if tired
  2. begin
  3. sleep
  4. snore
  5. end if tired
  6. sleep unless not tired
  7. begin
  8. sleep
  9. snore
  10. end unless not tired

当你在某些测试条件为 true 时要重复执行一些明确的操作时,这种简洁的语法是很有用的。例如,在常量 DEBUG 为 true 时你的代码可能需要输出一些调试信息。

  1. puts( "somevar = #{somevar}" ) if DEBUG
constants.rb

常量(Constants)

Ruby 中的常量以大写字母开头。 类名就是常量。你可以使用 constants 方法获取所有已定义常量的列表: Object.constantsRuby 提供了 const_getconst_set 方法来获取和设置特定的以符号命名的常量的值(标识符前面带有冒号,如 :RUBY_VERSION)。请注意,与许多其它编程语言中的常量不同,Ruby 中的常量可以为其分配新的值: RUBY_VERSION = “1.8.7” RUBY_VERSION = “2.5.6”上面给 RUBY_VERSION 常量重新赋值会产生一个 ‘已初始化的常量’(already initialized constant)的警告(warning)- 但不是错误(error)!