内建函数

严格来说,本页所描述的东西在 Ruby 中并不能称为「函数」,而是应该叫做「方法」。但是在 Kernel 里定义的方法可以在任何地方调用,那就和其他语言中的函数使用方式没有差别。重新定义这些方法时,请务必考虑由此所带来的影响。

block_given?

若某方法带区块则返回 true ;否则返回 false。可参看 迭代器 以获得更多的信息。

catch(tag) {|tag| .... }

执行区块并返回其计算值。区块执行时若遇到与 tag 同名的 throw ,则返回该 throw 的第二个参数。

使用 break 无法一次跳出所有嵌套在一起的循环。在这些情况下,可以使用 catch 代替。

catch(:loop1) {
  for i in 1..2
    for j in 1..2
      throw :loop1, j
    end
  end
}
eval(expr)

将 expr 字符串作为 Ruby 程序来计算,并返回其计算值。

exit

跳出 Ruby 程序。

exit 会抛出 SystemExit 异常来终止程序,所以它可以在必要的时候被 rescue 语句捕捉。

loop { ... }

只要不被中断,就不断反复对区块进行计算。

open(file[, mode])
open(file[, mode]) {|io| ... }

将文件 file 打开并返回一个 File 对象。使用 mode 指定下面的字符串当 mode 省略时,默认值为 "r"。

使用 "+" 时就以读写模式(RDWR)打开文件:

也可以使用 "b" 标志(如: "r+b")表示以二进制模式打开文件。

当 open 带区块时,则会打开文件、执行区块,然后在执行结束时关闭文件。此时则会返回区块计算的结果。也就是说:

open(path, mode) do |f|
   ...
end
# 几乎相当于上面的代码
f = open(path, mode)
begin
   ...
ensure
  f.close
end
p(obj, [obj2, ...])

将 obj 以人类可读的形式输出。相当于下面的代码(参看 Object#inspect ):

print obj.inspect, "\n", obj2.inspect, "\n", ...

返回 nil。

在RGSS3中,该语句再次变为了标准输出语句,不再具有显示对话窗口的效能,但是在DEBUG控制台中很有用处。

print(arg[, ...])

将参数依次输出,若参数为非字符串对象,则自动用 to_s 转换成字符串输出。然而若参数为 nil 则输出字符串「nil」。

返回 nil。

printf(format[, arg[, ...]])

将参数转换为文本格式输出,就像C语言中的同名函数一样。如果没有指定的参数,那就什么都不做。

可以参考 sprintf 格式 以获得更多有关Ruby语言中格式化字符串扩展的信息。

返回 nil。

putc(ch)

输出文本 ch。如果 ch 是一个数字的话,就输出在ASCII码对照表中与之相对应的字母;而如果 ch 是一个字符串的话,则输出第一个字符。

返回 ch。

注:参数中的特殊符号以及大于255的数字会被该函数直接无视。

putc("ch")
putc(?c)
putc(99)
# => ccc
puts([obj[, obj2[, ....]]] )

输出参数中的对象以及一个换行符,如果没有参数则输出一个换行符。

如果参数是一个数组,那么数组中的元素会按照顺序进行输出,如果一个数组和字符串以外类型的对象,函数会先用to_ary方法转换为数组,然后用to_s方法转换为字符串再进行输出,如果最终所得的是nil,那么它也会输出nil。

如果一个参数以换行符结束,那么这个换行符不会被输出。

puts "foo", "bar\n", "baz"
puts ""    # 仅仅输出一个换行符
puts       # 仅仅输出一个换行符
puts "foo"
=> foo
   bar
   baz
   foo

返回 nil。

raise
raise(message)
raise(exception)
raise(error_type, message)

抛出异常,详情请参阅 raise

rand([max=0])

生成在 0 ≤ 整数 < max (0 ~ max(不含))范围之间的随机整数。若是没有调用 srand,则会自动调用之。

若 max 是 nil 或 0 ,则以 Float 格式返回 0 ≤ 实数 < 1 (0 ~ 1(不含))范围之内的随机实数。

sprintf(format[, arg[, ...]])

以C语言的 sprintf 一样的方式解释 format 字符串,将参数格式化之后返回结果字符串。

详情请参阅 sprintf 格式

srand([seed])

设置 rand 方法的产生随机数的种子,返回旧的初始值。省略了 seed ,则使用当前时间做为种子。

throw(tag[, value])

跳出(方法)至使用相同 tag 的 catch 区块结尾处。若是没有相同 tag 的 catch 区块,就会以 NameError 结束线程。 value 则是 catch 的返回值。