国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby self在不同環境的含義

2020-10-29 19:46:47
字體:
來源:轉載
供稿:網友
而由于ruby作為一個完全純凈的面向對象語言,任何東東都是對象,方法是對象,類也是對象...,所以self就會有很多環境,區分不同環境的self含義才能更好的理解程序的含義
一、Top Level Context
Ruby代碼
puts self
打印出main,這個代表Object的默認對象main.
二、在class或module的定義中:
在class和module的定義中,self代表這個class或這module對象:
Ruby代碼
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代表的東東一樣:程序自動傳遞的調用這個方法的對象
Java代碼
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
四、在單例方法或者類方法中:
單例方法是針對一個對象添加的方法,只有這個對象擁有和訪問這個方法,這時候self是擁有這個方法的對象:
Ruby代碼
# 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
在類方法中self代表這個類對象:
Ruby代碼
# self4.rb
class S
def S.x
puts "Class method of class S"
puts self
end
end
S.x
運行結果:
寫道
>ruby self4.rb
Class method of class S
>Exit code: 0
從上面的例子我們可以看出不管是ruby的self還是java的this都表示在當前的環境下你可以訪問的當前的或者默認的對象。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 读书| 阿巴嘎旗| 崇礼县| 漳州市| 普陀区| 东乌珠穆沁旗| 韶山市| 腾冲县| 沧州市| 上饶市| 虞城县| 任丘市| 绥化市| 会理县| 高邑县| 黔西县| 皮山县| 蓝山县| 留坝县| 白银市| 青州市| 湖北省| 绥宁县| 南康市| 夏邑县| 元朗区| 桑植县| 黄山市| 喀什市| 莆田市| 张家川| 平江县| 自贡市| 高雄县| 宜丰县| 义乌市| 巴林右旗| 南阳市| 南靖县| 吉隆县| 孝感市|