内部常数

TRUE ((<obsolete>))

真值的代表。与true相同。Ruby中把所有非伪值(即非false又非nil的值)都看作真。(请参考obsolete。)

FALSE ((<obsolete>))

伪值。与false相同。(请参考obsolete。)

NIL ((<obsolete>))

与nil相同。(请参考obsolete。)

STDIN

标准输入。$stdin的默认值。

STDOUT

标准输出。$stdout的默认值。

STDERR

标准错误输出。$stderr的默认值。

ENV

表示环境变量的(伪)哈希表(详情请参考ENV)。若改变该哈希表的值时,将作为子进程环境而被继承下来。

ARGF

由参数(若没的话就使用标准输入)构成的虚拟文件(详情请参考ARGF)。也就是说,getsARGF.gets的意义相同。可以使用ARGF.file得到当前读入的文件对象,使用ARGF.filename得到当前读入的文件名。

ARGV

传给Ruby脚本的参数。内部变量$*的别名。而面向Ruby自身的参数已经被摘除。

DATA

访问脚本中__END__(脚本终点)以后部分的File对象。

注意:

  • 使用DATA.rewind后的读取位置不再是__END__后面,而是脚本文件的开头。
  • 若读入脚本时使用的是标准输入的话,则为标准输入。
  • 如果读入脚本时并没有使用文件或标准输入,或者脚本并非以__END__结束时,则该定义将不再适用。
  • 即使用requireload加载文件时,也并不是指该文件(_FILE_),而是指运行文件($0)。
TOPLEVEL_BINDING

顶层中的Binding对象。

RUBY_VERSION

显示Ruby版本的字符串。Ruby版本信息的形式为major.minor.teeny。(当前)各个号码的位数不会超过2位,因此

if RUBY_VERSION >= '1.6.7'
  # 在1.6.7以后的版本中有效的操作
else
  # 在此之前的版本中有效地操作
end

按照版本信息的不同来进行分支处理。

在1.8以前的版本中,minor是奇数时则为开发版,minor是偶数时则为稳定版。在1.9.0以后的版本中,teeny为0的版本是开发版。

RUBY_RELEASE_DATE

显示Ruby发布日期的字符串。

RUBY_PLATFORM

显示平台信息的字符串。

VERSION ((<obsolete>))
RELEASE_DATE ((<obsolete>))
PLATFORM ((<obsolete>))

这些都是前面那些常数RUBY_XXX的旧名称。请参考obsolete

ruby 1.9 特性: 这些常数已经停用。

SCRIPT_LINES__

默认情况下,该常数不会被定义。

若将该常数定义为哈希表后,在编译源代码时,源文件名将成为哈希表元素的索引,而源文件的内容会被按行切分后转化为数组,该数组将成为哈希表元素的内容。在调试(debug.rb)等场合会用到该常数。

SCRIPT_LINES__ = {}
require 'English'
p SCRIPT_LINES__

# 注: 输出内容被处理过。
# => {"/usr/local/lib/ruby/1.6/English.rb"=>
      ["alias $ERROR_INFO              $!\n",
       "alias $ERROR_POSITION          $@\n",
       "alias $LOADED_FEATURES         $\"\n",
                :
                :
       "alias $POSTMATCH               $'\n",
       "alias $LAST_PAREN_MATCH        $+\n"]}

另外,只有在$SAFE等级为0时才有效。同时,也不能由eval进行编译。