Ruby 预先定义的变量和常量
Ruby预定义变量
Ruby包含了大量的预定义变量。每个预定义变量都有自己的规范。你可以使用预定义变量来执行一个特定的任务,比如在处理解释器参数或正则表达式时。Ruby中的预定义变量列表如下所示。
变量 | 描述 |
---|---|
$! | 它持有上一次’raise’所设定的异常信息信息。$ERROR_INFO的别名。 |
$@ | 它持有最后一次异常发生时的回溯信息数组。$ERROR_POSITION的别名。 |
$/ | 输入记录的分隔符,默认为换行。如果它被设置为nil,那么整个文件将被一次性读取。INPUT_RECORD_SEPARATOR的别名。 打印和IO#写的输出分隔符,默认为nil。OUTPUT_RECORD_SEPARATOR的别名。 |
$, | 用于打印的输出字段分隔符和Array#join的默认分隔符。$OUTPUT_FIELD_SEPARATOR的别名。 |
$; | 是String#split的默认分隔符。$FIELD_SEPARATOR的别名。 |
$. | 它保持当前从最后一个文件中读取的输入行数。$INPUT_LINE_NUMBER的别名。 |
$< | 一个可以访问所有作为命令行参数或stdin的文件内容的连接的对象。DEFAULT_INPUT的别名。 |
$> | 它是kernel.print和kernel.printf的输出目的地,默认值是stdout。DEFAULT_OUTPUT的别名。 |
$& | 最后一个模式匹配的字符串。$MATCH的别名。 |
$` | 最后一个模式匹配左边的字符串。$PREMATCH的别名。 |
$’ | 最后一个模式匹配的右边的字符串。$POSTMATCH的别名。 |
$+ | 与上次成功匹配的模式中的最后一个匹配组相关的字符串。$LAST_PAREN_MATCH的别名。 |
$1-$9 | 在最后一次成功匹配的模式中,与第n组匹配的字符串。 |
$_ | 当前范围内由get或readline读取的最后一个输入行。它是一个局部变量。是$LAST_READ_LINE的别名。 |
$~ | 它保存了当前作用域中最后一次匹配的信息。它是一个局部变量。$LAST_MATCH_INFO的别名。 |
$-p | 如果选项-p被设置,则为真(循环模式开启)。它是一个只读的变量。 |
$-l | 如果选项-l被设置,则为真(行结束过程被打开)。这是一个只读的变量。 |
$-i | 如果设置了in-place-edit模式,这个变量保持扩展,否则为零。 |
$-a | 如果设置了选项-a(自动分割模式为1),则为真。它是只读变量。 |
$-d | -d的级别是开关。是$DEBUG的别名。 |
$-v | 冗长的标志。它由-v开关设置。$VERBOSE的别名。 |
$-K | 源代码的字符编码。$KCODE的别名。 |
$0 | 包含正在执行的脚本的名称。 |
$$ | 当前正在执行的Ruby程序的进程号。$PROCESS_ID的别名。 |
$? | 最后一个终止的子进程的状态。$CHILD_STATUS的别名。 |
$: | 通过加载或要求加载程序和二进制模块的路径。$LOAD_PATH的别名。 |
$FILENAME | 当前从<读取的输入文件的名称,与<.文件名相同。 |
$stderr | 当前的标准错误输出。 |
$stdin | 当前的标准输入。 |
$stdout | 当前的标准输出。 |
$= | 区分大小写的标志,默认为nil。 |
$* | 程序的命令行参数,也称为ARGV.ARGV的别名。 |
$” | 数组中包含了由require加载的模块名称,是$LOAD_FEATURES的别名。 |
例子
# Ruby program to illustrate the
# use of pre-defined Variables
# Using '0' To know about the
# script name
puts "Script_name: ",0;
# Using ' #{}' to know about the total
# number of process in the script
puts "Total number of process in this script: #{}"
# Using ; as default separator
# for String#split.
a = "1,2,3,4,5,6,7"; = ","
p a.split
# Pattern matching
"Welcome to GeeksforGeeks Portal!" =~ /Geeks/
# use to print the string to the
# left of the last pattern match
p `
# use to print the string matched
# by the last pattern match
p&
# use to print the string to the
# right of the last pattern match
p $'
输出
Script_name:
/var/www/service/usercode/969513068/source.rb
Total number of process in this script: 3950
["1", "2", "3", "4", "5", "6", "7"]
"Welcome to "
"Geeks"
"forGeeks Portal!"
Ruby预定义常量
Ruby包含许多预定义的常量。预定义常量的列表如下所示。
常量名称 | 说明 |
---|---|
TRUE | 相当于真。 |
FALSE | 相当于false。 |
NIL | 相当于nil。 |
STDIN | 标准输入,默认值为$stdin。 |
STDOUT | 标准输出,默认值为$stdout。 |
STDERR | 标准输出错误,默认值为$stderr。 |
RUBY_VERSION | 一个字符串,显示Ruby解释器的版本。 |
RUBY_PLATFORM | 一个字符串,显示 Ruby 解释器的平台。 |
Ruby_release_date | 一个字符串,显示Ruby解释器的发布日期。 |
DATA | 程序的文件对象,正好指向END之后。如果程序中不存在END,则不定义。 |
ARGV | 一个数组,存放传递给程序的命令行参数。$*的别名。 |
ARGF | 一个对象,给出对作为命令行参数传递的文件的虚拟连接的访问。$<的别名。 |
ENV | 这是一个类似哈希值的对象,包含当前的环境变量。 |
注意: 建议使用true、false和nil,因为TRUE、FALSE和NIL是向后兼容的。
例子
# Ruby program to illustrate
# pre-defined Constants
# To know about Ruby Version
a = RUBY_VERSION
puts "Current Version: #{a}"
# To Know about Ruby Platform
b = RUBY_PLATFORM
puts "Platform of Ruby: #{b}"
# To know about Ruby Release Date
c = RUBY_RELEASE_DATE
puts "Release date of Ruby: #{c}"
输出
Current Version: 2.3.1
Platform of Ruby: x86_64-linux-gnu
Release date of Ruby: 2016-04-26