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

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

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2279 | 回復(fù): 1
打印 上一主題 下一主題

總結(jié):Ruby中的@ % # $等各種千奇百怪的符號的含義等 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-02-24 20:32 |只看該作者 |倒序?yàn)g覽
總結(jié):Ruby中的@ % # $等各種千奇百怪的符號的含義等











初學(xué)RUBY時(shí),一看各種稍微復(fù)雜一點(diǎn)的代碼時(shí)很容易被RUBY各種約定的表示方法搞暈,這整理一下 。




(若標(biāo)識符首位是小寫字母或“_”,則該標(biāo)識符就是局部變量或方法調(diào)用。)

(以大寫字母([A-Z])開始的標(biāo)識符是常數(shù)、類名或者模塊名)

以@開始的變量是實(shí)例變量,它屬于特定的對象。可以在類或子類的方法中引用實(shí)例變量。

若引用尚未被初始化的實(shí)例變量的話,其值為nil。Ruby的實(shí)例變量無須聲明,每個(gè)實(shí)例變量都是在第一次出現(xiàn)時(shí)動態(tài)加入對象。Ruby的實(shí)例變量通常在方法中定義類聲明——當(dāng)在方法里聲明實(shí)例變量時(shí),該實(shí)例變量實(shí)際上屬于該方法所在類的實(shí)例,而不是屬于該方法。例如
  1. ?1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17 class Apple      
  18.     # 定義第一個(gè)方法      
  19.     def info1      
  20.         # 輸出實(shí)例變量@a      
  21.         puts @a   
  22.     end   
  23.     # 定義第二個(gè)方法      
  24.     def info2      
  25.         # 為實(shí)例變量賦值      
  26.         @a = "Hello";      
  27.     end   
  28. end   
  29. # 創(chuàng)建Apple類實(shí)例      
  30. apple = Apple.new   
  31. # 調(diào)用方法      
  32. apple.info2      
  33. apple.info1
復(fù)制代碼
以@@開始的變量是類變量。在類的定義中定義類變量,可以在類的特殊方法、實(shí)例方法等處對類變量進(jìn)行引用/賦值:
  1. ?1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6 class Foo
  7.   @@foo = 1
  8.   def bar
  9.     puts @@foo
  10.   end
  11. end
復(fù)制代碼
類變量與常數(shù)的區(qū)別如下。

可以重復(fù)賦值(常數(shù)則會發(fā)出警告)
不能在類的外部直接引用(在繼承類中則可以引用/賦值)
類變量與類的實(shí)例變量的區(qū)別如下。

可在子類中引用/賦值
可在實(shí)例方法中引用/賦值
可以把類變量看作一種被類、子類以及它們的實(shí)例所共享的全局變量。
  1. ?class Foo
  2.   @@foo = 1
  3. end
  4. class Bar < Foo
  5.   p @@foo += 1          # => 2
  6. end
  7. class Baz < Bar
  8.   p @@foo += 1          # => 3
  9. end
復(fù)制代碼
模塊中定義的類變量(模塊變量)被所有包含該模塊的類所共享。
  1. ?module Foo
  2.   @@foo = 1
  3. end
  4. class Bar
  5.   include Foo
  6.   p @@foo += 1          # => 2
  7. end
  8. class Baz
  9.   include Foo
  10.   p @@foo += 1          # => 3
  11. end

  12.   
復(fù)制代碼
以$開始的變量是全局變量,可以在程序的任何地方加以引用(因此需要特別留意)。全局變量無需變量聲明。引用尚未初始化的全局變量時(shí),其值為 nil。

  

%表示法(百分號表示法):

%{String}  用于創(chuàng)建一個(gè)使用雙引號括起來的字符串
%Q{String} 用于創(chuàng)建一個(gè)使用雙引號括起來的字符串
%q{String} 用于創(chuàng)建一個(gè)使用單引號括起來的字符串
%r{String} 用于創(chuàng)建一個(gè)正則表達(dá)式字面值
%w{String} 用于將一個(gè)字符串以空白字符切分成一個(gè)字符串?dāng)?shù)組,進(jìn)行較少替換
%W{String} 用于將一個(gè)字符串以空白字符切分成一個(gè)字符串?dāng)?shù)組,進(jìn)行較多替換
%s{String} 用于生成一個(gè)符號對象
%x{String} 用于執(zhí)行String所代表的命令

"%05d" % 123 &raquo; "00123"

"%-5s: %08x" % [ "ID", self.id ] &raquo; "ID:200e1670"




# 用來調(diào)用一個(gè)方法,




*號:

若左邊最后一個(gè)表達(dá)式前帶*的話,則將右邊多余的元素以數(shù)組的形式代入這個(gè)帶*的表達(dá)式中。若右邊沒有多余元素的話,就把空數(shù)組代入其中。
  1. ?*foo     = 1, 2, 3      # foo = [1, 2, 3]
  2. foo,*bar = 1, 2, 3      # foo = 1; bar = [2, 3]
復(fù)制代碼
*用在方法定義中表示可變長的變量:

【FROM “ProgrammingRuby”】
  1. Variable-Length Argument Lists

  2. But what if you want to pass in a variable number of arguments, or want to capture multiple arguments into a single parameter? Placing an asterisk before the name of the parameter after the ``normal'' parameters does just that.

  3. ?def varargs(arg1, *rest)
  4.     "Got #{arg1} and #{rest.join(', ')}"
  5. end
  6. varargs("one") &raquo; "Got one and "
  7. varargs("one", "two") &raquo; "Got one and two"
  8. varargs "one", "two", "three" &raquo; "Got one and two, three"



  9. ?irb(main):005:0> def call_back(*a)
  10. irb(main):006:1> a.each do |arg|
  11. irb(main):007:2*    puts  arg
  12. irb(main):008:2> end
  13. irb(main):009:1> end
  14. => nil
  15. irb(main):011:0> call_back(["hello",99])
  16. hello
  17. 99
  18. => [["hello", 99]]
  19. irb(main):012:0> call_back(["hello",99],"hello",99)
  20. hello
  21. 99
  22. hello
  23. 99
  24. => [["hello", 99], "hello", 99]
復(fù)制代碼
其他用法:
  1. C:\Users\Administrator>irb
  2. irb(main):001:0> [1,2,3] * "hi"
  3. => "1hi2hi3"
  4. irb(main):002:0> [1,2,3] * ";"
  5. => "1;2;3"
  6. irb(main):003:0> [1,2,3] * 3
  7. => [1, 2, 3, 1, 2, 3, 1, 2, 3]
  8. irb(main):004:0> "hi" * 3
  9. => "hihihi"
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-02-24 20:32 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP