亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 8138 | 回復(fù): 12
打印 上一主題 下一主題

ruby掃盲之單態(tài)方法 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-11-22 15:30 |只看該作者 |倒序?yàn)g覽
ruby有用的特性之一是單態(tài)方法(singleton)。
某個(gè)方法如果僅屬于一個(gè)特定目標(biāo),那么就稱之為單態(tài)方法。

  1. s="hello"

  2. def s.hi
  3.    split(//).join("-")
  4. end
復(fù)制代碼


對(duì)上述語(yǔ)句,s是一個(gè)字符目標(biāo),我們給它單獨(dú)定義一個(gè)方法hi,hi就是singleton。
運(yùn)行結(jié)果為:

> s.hi
=> "h-e-l-l-o"


類自身也是一個(gè)目標(biāo),因此類也可以有單態(tài)方法。
通常所說(shuō)的類方法,其實(shí)就是類的單態(tài)方法。

  1. class Myclass
  2.    def self.hi
  3.       "hi world"
  4.    end
  5. end
復(fù)制代碼


運(yùn)行結(jié)果:
> Myclass.hi
=> "hi world"

當(dāng)然也可以在類之外定義它:

  1. def Myclass.echo
  2.    self.inspect
  3. end
復(fù)制代碼


運(yùn)行結(jié)果:
> Myclass.echo
=> "Myclass"


目標(biāo)可以從模塊擴(kuò)展方法,這些也都是單態(tài)方法。

  1. module Mymod
  2.    def fm
  3.      "m"
  4.    end
  5.    def age
  6.      20
  7.    end
  8. end

  9. guy = "kenn"
  10. guy.extend Mymod
復(fù)制代碼


運(yùn)行結(jié)果:
> guy.fm
=> "m"
> guy.age
=> 20


單態(tài)方法始終屬于目標(biāo),而不是引用目標(biāo)的變量。
只要目標(biāo)不變,方法就存在。
另外singleton不可復(fù)制。

irb(main):025:0> s = "hello"
=> "hello"
irb(main):026:0> def s.hi
irb(main):027:1>    "hi world"
irb(main):028:1> end
=> nil
irb(main):029:0> x=s
=> "hello"
irb(main):030:0> x.hi
=> "hi world"
irb(main):031:0> y=s.dup
=> "hello"
irb(main):032:0> y.hi
NoMethodError: undefined method `hi' for "hello":String
        from (irb):32
        from :0
irb(main):034:0> x.object_id == s.object_id
=> true
irb(main):035:0> y.object_id == s.object_id   
=> false


x和s是同一個(gè)目標(biāo),y和s不是同一個(gè)目標(biāo),singleton沒(méi)有復(fù)制過(guò)去。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-11-23 11:42 |只看該作者
x和s是同一個(gè)目標(biāo),y和s不是同一個(gè)目標(biāo),singleton沒(méi)有復(fù)制過(guò)去。


sorry 這里實(shí)際不精確。Object#clone可以復(fù)制singleton。
Object#clone與Object#dup的本質(zhì)不同,后者實(shí)例化被拷貝目標(biāo)的原始類(產(chǎn)生一個(gè)new過(guò)程),并且把實(shí)例變量指向原始目標(biāo)的相同變量。
前者不執(zhí)行實(shí)例化過(guò)程,而是拷貝元類(metaclass),并且設(shè)置實(shí)例變量,指向原始目標(biāo)的相同變量。
所以clone可以拷貝singleton。{:3_193:}

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-11-27 11:08 |只看該作者
樓主這些個(gè)資料都是哪兒找的呢?還行。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-11-29 09:23 |只看該作者
樓主這些個(gè)資料都是哪兒找的呢?還行。
2gua 發(fā)表于 2010-11-27 11:08



    謝謝。。都是自己寫的。這些個(gè)基礎(chǔ)知識(shí),無(wú)需去抄吧。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-11-29 13:34 |只看該作者
謝謝。。都是自己寫的。這些個(gè)基礎(chǔ)知識(shí),無(wú)需去抄吧。
zuerrong 發(fā)表于 2010-11-29 09:23



    不錯(cuò)哦,可以發(fā)個(gè)給我嗎?

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-11-29 13:46 |只看該作者
不錯(cuò)哦,可以發(fā)個(gè)給我嗎?
2gua 發(fā)表于 2010-11-29 13:34



    都寫在chinaunix呀。。每天有空就寫一篇,沒(méi)專門保存哦。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-11-29 13:47 |只看該作者
回復(fù) 6# zuerrong


    呃,那鼓勵(lì)寫個(gè)系統(tǒng)滴,呵呵。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2011-11-17 03:21 |只看該作者
鼓勵(lì)有空就每天寫一篇。
謝謝。

論壇徽章:
1
天蝎座
日期:2013-08-25 10:27:22
9 [報(bào)告]
發(fā)表于 2012-11-20 23:37 |只看該作者
不錯(cuò)啊

書還在路上,先看看祖爾的這個(gè)系列帖子……

論壇徽章:
7
戌狗
日期:2013-12-15 20:43:38技術(shù)圖書徽章
日期:2014-03-05 01:33:12技術(shù)圖書徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16賽季CBA聯(lián)賽之青島
日期:2016-03-17 20:36:13
10 [報(bào)告]
發(fā)表于 2013-02-06 15:20 |只看該作者
3Q~~謝謝。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP