几种Ruby self应用方法介绍
Ruby语言通常被人们理解为是一种解释型脚本语言。在对Ruby语言的学习中,我们需要不断的从编码实践中去总结经验,帮助我们提高编程能力。
Ruby self在不同的环境中有不同的含义,这点和java的this不同,原因是java实际上只有一种环境--在class的实例方法定义中使用,代表访问这个方法参数自动传进的那个对象。
而由于ruby作为一个完全纯净的面向对象语言,任何东东都是对象,方法是对象,类也是对象...,所以Ruby self就会有很多环境,区分不同环境的self含义才能更好的理解程序的含义。
一、Top Level Context
puts self
打印出main,这个代表Object的默认对象main.
二、在class或module的定义中:
在class和module的定义中,self代表这个class或这module对象:
class S puts 'Just started class S' puts self module M puts 'Nested module S::M' puts self end puts 'Back in the outer level of S' puts self end
输出结果:
>ruby self1.rb Just started class S Nested module S::M S::M Back in the outer level of S >Exit code: 0
三、在实例的方法定义中:
这点和java的this代表的东东一样:程序自动传递的调用这个方法的对象
class S def m puts 'Class S method m:' puts self end end s = S.new s.m
运行结果:
>ruby self2.rb Class S method m: #<S:0x2835908> >Exit code: 0
四、在单例方法或者类方法中:
单例Ruby self方法是针对一个对象添加的方法,只有这个对象拥有和访问这个方法,这时候self是拥有这个方法的对象:
# self3.rb obj = Object.new def obj.show print 'I am an object: ' puts "here's self inside a singleton method of mine:" puts self end obj.show print 'And inspecting obj from outside, ' puts "to be sure it's the same object:" puts obj
运行结果:
ruby self3.rb I am an object: here's self inside a singleton method of mine: #<Object:0x2835688> And inspecting obj from outside, to be sure it's the same object: #<Object:0x2835688> >Exit code: 0
在类方法中Ruby self代表这个类对象:
# self4.rb class S def S.x puts "Class method of class S" puts self end end S.x
运行结果:
相关推荐
PMJ0 2020-10-13
longzhiwen 2020-09-06
yangxingstar 2020-08-31
LUCIEN0 2020-08-17
huangzihao00 2020-08-17
Jan 2020-08-17
AndesStay 2020-06-12
afengxg 2020-06-09
zamesking 2020-06-09
afengxg 2020-06-09
何志文 2020-06-09
teresalxm 2020-06-05
何志文 2020-05-16
何志文 2020-05-11
fsl 2020-05-04
JOO 2020-04-26
倩 2020-04-22
afanti 2020-04-19
始终不够 2020-04-10