Ruby - 内置函数

由于内核模块包含在 Object 类中,因此它的方法在Ruby程序中随处可用.可以在没有接收器(功能形式)的情况下调用它们.因此,它们通常被称为函数.

Sr.No.方法&说明
1

abort

终止程序.如果引发异常(即$!不是nil),则会显示其错误消息.

2

Array(obj)

将obj转换为obj后返回obj使用to_ary或to_a的数组.

3

at_exit {...}

在程序退出时注册执行块.与END语句类似,但END语句只将块注册一次.

4

autoload( classname, file)

注册第一次从文件加载的类类名它被使用了. classname可以是字符串或符号.

5

binding

返回当前变量和方法绑定.返回的 Binding 对象可以作为其第二个参数传递给 eval 方法.

6

block_given?

如果使用调用方法,则返回true.

7

callcc {| c | ...}

Continuation 对象c传递给块并执行块. callcc 可用于全局退出或循环构造.

8

caller([ n])

返回数组中的当前执行堆栈形式 file:line 中的字符串.如果指定了n,则从第n级返回堆栈条目.

9

catch(tag){...}

通过调用期间的投掷捕获非本地退出块的执行.

10

chomp([rs = $/])

返回变量$ _的值,删除结束换行符,返回结果到$ _.可以使用rs指定换行符字符串的值.

11

chomp!([rs = $/])

从$ _中删除换行符,修改字符串地方.

12

chop

返回$ _的值,删除最后一个字符(一个字节),将结果返回给$ _.

13

chop!

从$ _中删除最后一个字符,修改字符串.

14

eval(str [,scope [,file,line]])

执行 str 作为Ruby代码.可以使用范围指定执行评估的绑定.要编译的代码的文件名和行号可以使用 file 和line指定.

15

exec(cmd [,arg ...])

通过运行命令 cmd 替换当前进程.如果指定了多个参数,则执行该命令时不进行shell扩展.

16

exit([ result = 0])

退出程序,结果为返回的状态代码.

17

exit!([ result = 0])

终止程序,绕过退出处理,例如确保等.

18

fail(...)

参见raise(...)

19

Float(obj)

将obj转换为float后返回obj.数字对象直接转换; nil转换为0.0;考虑到0x,0b基数前缀转换字符串.其余的使用obj.to_f进行转换.

20

fork

fork {...}

创建子进程.在子进程中返回 nil ,并在父进程中返回子进程的ID(整数).如果指定了一个块,它将在子进程中运行.

21

format( fmt[, arg...])

参见sprintf.

22

gets([ rs = $/])

读取命令行中指定的文件名或标准输入中的一行.可以使用rs显式指定记录分隔符字符串.

23

global_variables

返回全局变量名称数组.

24

gsub(x,y)

gsub(x){...}

将$ _中与x匹配的所有字符串替换为y.如果指定了块,则匹配的字符串将替换为块的结果.修改后的结果分配给$ _.

25

gsub!(x,y)

gsub!(x){...}

执行与gsub相同的替换,但字符串已更改.

26

Integer( obj)

退货将它转换为整数后的obj.数字对象直接转换; nil转换为0;考虑到0x,0b基数前缀转换字符串.其余的使用obj.to_i进行转换.

27

lambda {| x | ...}

proc {| x | ...}

lambda

proc

将块转换为 Proc 对象.如果没有指定块,则转换与调用方法关联的块.

28

load(file [,private = false])

29

local_variables

返回局部变量名的数组.

30

loop {...}

重复一段代码.

31

open( path[, mode = "r"])

open( path[, mode = "r"]) {| f|...}

打开文件.如果指定了块,则执行该块,并将打开的流作为参数传递.当块退出时,文件自动关闭.如果 path 以管道|开头,则以下字符串作为命令运行,并返回与该进程关联的流.

32

p(obj)

使用其inspect方法显示obj(通常用于调试).

33

print([arg ...])

打印arg到 $ defout 的.如果没有指定参数,则打印$ _的值.

34

printf(fmt [,arg ...])

根据格式化arg fmt 使用 sprintf 并将结果打印到 $ defout .有关格式规范,请参阅sprintf了解详细信息.

35

proc {| x | ...}

proc

参见lamda.

36

putc(c)

将一个字符打印到默认输出( $ defout ).

37

puts([str])

将字符串打印到默认输出( $ defout ).如果字符串不以换行符结尾,则会在字符串后附加换行符.

38

raise(...)

fail(...)

引发异常.如果未指定异常类,则假设 RuntimeError .在 rescue 子句中调用 raise
而不带参数会重新引发异常.在救援条款之外这样做会引发无消息 RuntimeError . 失败是加薪的过时名称.

39

rand([max = 0])

生成大于或等于的伪随机数等于0且小于最大值如果未指定max或将其设置为0,则返回一个随机数作为大于或等于0且小于1的浮点数. 可用于初始化伪随机数流.

40

readline([rs = $/])

相当于获取,除非它在读取EOF时引发EOFError异常.

41

readlines([rs = $/]>

返回一个字符串数组,其中包含指定为命令行参数的文件名或标准输入的内容.

42

require(lib)

首次调用时加载库(包括扩展库) lib . require不会多次加载同一个库.如果 lib 中未指定扩展名,则需要尝试向其添加.rb,.so等.

43

scan( re)

scan( re) {|x|...}

相当于$ _.扫描.

44

select(reads [,writes = nil [,excepts = nil [,timeout = nil]]])

检查三种IO对象输入,输出和异常状态的变化作为IO对象的数组传递.对于不需要检查的参数传递 nil .将返回包含状态更改的IO对象数组的三元素数组. 在超时时返回.

45

set_trace_func(proc)

设置跟踪处理程序. proc 可以是字符串或 proc 对象. set_trace_func 由调试器和分析器使用.

46

sleep([ sec])

暂停程序执行秒数.如果未指定sec,程序将永久暂停.

47

split([ sep[, max]])

相当于$ _.拆分.

48

sprintf(fmt [,arg ...])

格式(fmt [,arg ...])

返回一个字符串,其中arg根据fmt格式化.格式化规范与C编程语言中的sprintf基本相同. fmt 中的转换说明符(%后跟转换字段说明符)将由相应参数的格式化字符串替换.转换文件列表将在下一节中给出.

49

srand([seed])

初始化一组随机数.如果未指定 seed ,则使用种子的时间和其他系统信息执行初始化.

50

字符串(obj)

使用obj.to_s将其转换为字符串后返回obj.

51

syscall(sys [,arg ...])

调用由指定的操作系统调用函数number sys . sys 的数量和含义取决于系统.

52

system(cmd [,arg ...])

执行 cmd 作为对命令行的调用.如果指定了多个参数,则直接运行该命令而不进行shell扩展.如果返回状态为0(成功),则返回 true .

53

sub(x,y)

sub(x) {...}

将$ _中与x匹配的第一个字符串替换为y.如果指定了块,则匹配的字符串将替换为块的结果.修改后的结果分配给$ _.

54

sub!(x,y)

sub!(x){...}

执行与sub相同的替换,但字符串已更改.

55

test( test, f1[, f2])

执行字符 test 指定的各种文件测试.为了提高可读性,您应该使用File类方法(例如File :: readable?)而不是此函数.下面的部分将给出一个参数列表.

56

throw(tag [,value = nil])

跳转到等待符号或字符串的catch函数标签的. value是 catch 使用的返回值.

57

trace_var(var,cmd)

trace_var(var){ ...}

设置全局变量的跟踪.变量名称被指定为符号. cmd 可以是字符串或Proc对象.

58

trap( sig, cmd)

trap( sig) {...}

设置信号处理程序. sig可以是字符串(如SIGUSR1)或整数.可以从信号名称中省略SIG.在进程终止之前调用EXIT信号或信号编号0的信号处理程序.

59

untrace_var(var [,cmd])

删除全局变量的跟踪.如果指定 cmd ,则仅删除该命令.

数字函数

以下是与数字相关的内置函数列表.它们应该如下使用;

#!/usr/bin/ruby

num = 12.40
puts num.floor      # 12
puts num + 10       # 22.40
puts num.integer?   # false  as num is a float.

这将产生以下结果 :

12
22.4
false

Sr.No.方法&说明
1

n+ num

n  -  num

n * num

n/num

执行算术运算:加法,减法,乘法和除法.

2

n%num

返回n的模数.

3

n ** num

Exponentiation.

4

n.abs

返回n的绝对值.

5

n.ceil

返回大于或等于的最小整数到n.

6

n.coerce(num)

返回一个包含num和n的数组,这两个数组都可能转换为允许它们相互操作的类型.用于数字运算符中的自动类型转换.

7

n.divmod(num)

返回一个数组,其中包含从n除以num的商和模数.

8

n.floor

返回小于或等于n的最大整数.

9

n.integer?

如果n是整数,则返回true.

10

n.modulo(num)

返回n除以num得到的模数,并用对商进行舍入楼层

11

n.nonzero?

如果不为零则返回n,否则返回nil.

12

n.remainder(num)

返回获得的余数将 n 除以 num 并从商中删除小数. 结果 n 始终具有相同的符号.

13

n.round

返回n四舍五入到最近整数.

14

n.truncate

将n作为整数返回,并删除小数.

15

n.zero?

如果n为0,则返回零.

16

n& num

n | num

n ^ num

按位运算:AND,OR,XOR和反转.

17

n<< num

n>> num

按位左移和右移.

18

n [num]

返回的值 num 来自最低有效位,即n [0].

19

n.chr

返回包含该字符的字符串对于字符代码 n .

20

n.next

n.succ

返回n后面的下一个整数.相当于n + 1.

21

n.size

返回 n 的机器表示中的字节数.

22

n .step(upto,step){| n | ...}

将块从 n 迭代到到达,递增每次.

23

n.times {| n | ...}

迭代块 n 次.

24

n.to_f

n 转换为浮点数.浮点转换可能会丢失精确信息.

25

n.to_int

转换为整数后返回 n .

Float函数

Sr.No.方法&说明
1

Float :: induced_from(num)

返回将 num 转换为浮点数的结果.

2

f.finite?

如果 f 不是无限且f.nan为假,则返回true.

3

f.infinite?

如果 f 为正无穷大,则返回1;如果为负无穷大,则返回-1;如果为其他任何内容,则返回nil.

4

f.nan?

如果 f 不是有效的IEEE浮点数,则返回true.

数学函数

Sr.No.方法&说明
1

atan2(x,y)

计算反正切.

2

cos(x)

计算x的余弦.

3

exp(x)

计算指数函数(e上升到x的幂).

4

frexp(x)

返回一个包含名义化分数和指数x的双元素数组.

5

ldexp(x,exp)

将x乘以2的值返回到exp的幂.

6

log(x)

计算x的自然对数.

7

log10(x)

计算s是x的基数10的对数.

8

sin(x)

计算x的正弦值.

9

sqrt(x)

返回x的平方根. x必须是正数.

10

tan(x)

计算x的正切值.

转换字段说明符

函数 sprintf(fmt [, arg ...])和format(fmt [,arg ...])返回一个字符串,其中arg根据fmt格式化.格式化规范与C编程语言中的sprintf基本相同. fmt 中的转换说明符(%后跟转换字段说明符)将替换为相应参数的格式化字符串.

Sr.No.Specifier&说明
1

b

二进制整数

2

c

单个字符

3

d,i

十进制整数

4

e

指数表示法(例如,2.44e6)

5

E

指数表示法(例如,2.44E6)

6

f

浮点数(例如,2.44)

7

g

如果指数小于-4则使用%e,否则使用%f

8

G

如果使用%E指数小于-4,%f否则

9

o

八进制整数

10

s

字符串或使用to_s转换的任何对象

11

u

无符号十进制整数

12.

x

十六进制整数(例如,39ff)

13

X

十六进制整数(例如,39FF)

以下是使用示例 :

#!/usr/bin/ruby

str = sprintf("%s\n", "abc")   # => "abc\n" (simplest form)
puts str 

str = sprintf("d=%d", 42)      # => "d=42" (decimal output)
puts str 

str = sprintf("%04x", 255)     # => "00ff" (width 4, zero padded)
puts str 

str = sprintf("%8s", "hello")  # => " hello" (space padded)
puts str 

str = sprintf("%.2s", "hello") # => "he" (trimmed by precision)
puts str

这将产生以下结果 :

abc
d = 42
00ff
   hello
he

测试函数参数

函数 test(test,f1 [,f2])执行以下字符 test

Sr.No.参数&说明
1

?r

调用者的有效uid是否可以读取f1?

2

?w

f1是否可由有效uid写入来电者?

3

?x

f1是否可以通过调用者的有效uid执行?

4

?o

f1是否由调用方的有效uid拥有?

5

?R

f1的真实用户是否可读取f1?

6

?W

f1是否可以通过调用者的真实uid写入?

7

?X

f1是否可由真实uid执行来电者?

8

?O

f1是否由真实的来电者拥有?

9

?e

f1是否存在?

10

?z

f1的长度是否为零?

11

?s

文件大小为f1(如果为0则为零)

12

?f

是f1 a常规文件?

13

?d

f1是目录吗?

14

?l

是f1一个符号链接?

15

?p

f1是命名管道(FIFO)吗?

16

?S

f1是套接字吗?

17

?b

f1是块设备吗?

18

?c

f1是字符设备吗?

19

?u

f1是否设置了setuid位?

20

?g

f1是否设置了setgid位?

21

?k

f1是否设置了粘滞位?

22

?M

最后修改时间为f1.

23

?A

f1的上次访问时间.

24

?C

f1的最后一个inode更改时间.

Sr.No.参数&说明
1

?=

Are modification times of f1 and f2 equal?

2

?>

Is the modification time of f1 more recent than f2 ?

3

?<

Is the modification time of f1 older than f2 ?

4

?-

$b $b

Is f1 a hard link to f2 ?


以下是用法示例。 假设main.rb存在read,write和not execution权限  :

#!/usr/bin/ruby

puts test(?r, "main.rb" )   # => true
puts test(?w, "main.rb" )   # => true
puts test(?x, "main.rb" )   # => false

This will produce the following result  :

true
false
false