成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

全方位解讀Ruby局部變量應用

開發 開發工具
Ruby局部變量是一個比較難以掌握的知識。除了在書本上學到的知識外,還需要不斷的從實際代碼編寫中去積累經驗,以鞏固我們的知識庫。

Ruby語言中部高,存在著一些變量。對于一個初步學習Ruby語言的朋友來說,應該熟練的掌握這些變量的運用。下面就為大家介紹一下Ruby局部變量的應用技巧。#t#

Ruby局部變量由小寫字母或下劃線(_)開頭.局部變量不像全局和實變量一樣在初始化前含nil值.

  1. ruby> $foo   
  2. nil   
  3. ruby> @foo   
  4. nil   
  5. ruby> foo   
  6. ERR: (eval):1:
     undefined local 
    variable or method 
    `foo' for main(Object)  

對Ruby局部變量的第一次賦值做的很像一次聲明.如果你指向一個未初始化的局部變量,Ruby解釋器會認為那是一個方法的名字;正如上面所見錯誤信息的. 一般的,局部變量的范圍會是

  1. proc{...}   
  2. loop{...}   
  3. def...end   
  4. class...end   
  5. module...end  

整個程序(除非符合上面某個條件)

下面的Ruby局部變量例子,define?是一個檢查標識符是否已定義的操作符.如果已定義它將返回標識符的描述,否則返回nil.正如你所見的,bar的范圍是 loop的局部變量;當loop退出時,bar無定義.

  1. ruby> foo = 44; print foo, 
    "\n"; defined? foo   
  2. 44   
  3. "local-variable"   
  4. ruby> loop{bar=45; print bar, 
    "\n"; break}; defined? bar   
  5. 45   
  6. nil  

 

一個范圍內的過程對象共享這個范圍內的Ruby局部變量.這里,局部變量 bar 由 main 和過程對象 p1, p2共享:

  1. ruby> bar=0   
  2. 0   
  3. ruby> p1 = proc{|n| bar=n}   
  4. #<Proc:0x8deb0>   
  5. ruby> p2 = proc{bar}   
  6. #<Proc:0x8dce8>   
  7. ruby> p1.call(5)   
  8. 5   
  9. ruby> bar   
  10. 5   
  11. ruby> p2.call   
  12. 5  

 

注意開始的"bar=0"不能省略;此賦值允許bar的范圍被 p1和 p2共享.不然 p1, p2 將會分別生成并處理它們自己的局部變量 bar, 調用 p2
也將導致"未定義局部變量或方法"錯誤.
過程對象的強大在于它們能被作為參數傳遞:共享的Ruby局部變量即使傳遞出原范圍也仍然有效.

  1. ruby> def box   
  2. contents = 15   
  3. get = proc{contents}   
  4. set = proc{|n| contents = n}   
  5. | return get, set   
  6. | end   
  7. nil   
  8. ruby> reader, writer = box   
  9. [#<Proc:0x40170fc0>
    #
    <Proc:0x40170fac>]   
  10. ruby> reader.call   
  11. 15   
  12. ruby> writer.call(2)   
  13. 2   
  14. ruby> reader.call   
  15. 2  

 

Ruby對待范圍的辦法相當聰明.顯然,上面例子里 contents 變量是由 reader 和 writer 共享的.我們也可以像上面那樣創造多對使用box的
reader-writer;每一對共享一個 contents 變量,對之間不相干擾.

  1. ruby> reader_1, writer_1 = box   
  2. [#<Proc:0x40172820>
    #
    <Proc:0x4017280c>]   
  3. ruby> reader_2, writer_2 = box   
  4. [#<Proc:0x40172668>
    #
    <Proc:0x40172654>]   
  5. ruby> writer_1.call(99)   
  6. 99   
  7. ruby> reader_1.call   
  8. 99   
  9. ruby> reader_2.call   
  10. 15  

以上就是對Ruby局部變量的一些詳細介紹。

責任編輯:曹凱 來源: jb51.net
相關推薦

2009-12-15 10:10:42

Ruby過程對象

2009-12-14 17:04:13

Ruby讀寫UNIX命

2009-12-16 17:07:27

Ruby on Rai

2010-01-04 14:06:35

Silverlight

2009-12-16 09:29:26

Ruby布爾表達式

2014-06-26 17:25:22

車聯網 ECU

2011-10-26 09:28:28

紅帽大數據Gluster

2010-01-27 13:52:15

Android多媒體框

2009-12-21 13:06:05

WCF Address

2009-12-15 17:28:11

Ruby自動化腳本框架

2009-12-08 10:33:23

PHP應用問題

2009-09-17 13:05:38

Linq局部變量類型

2010-01-05 09:57:34

.NET Framew

2024-05-10 14:35:56

人工智能大型語言模型

2009-12-21 15:48:29

WCF應用程序

2017-09-13 15:37:53

2009-08-26 16:37:07

C#迭代器局部變量

2013-03-01 09:56:57

2016-02-16 14:42:58

戴爾云計算

2009-12-11 11:23:22

策略路由配置
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久草| 国产精品久久久久久久7777 | 成人亚洲精品 | 国内精品成人 | 成人在线免费观看视频 | 亚洲精品一区二区三区 | 中文字幕91av | 爱爱免费视频 | 免费同性女女aaa免费网站 | 成年男女免费视频网站 | 在线观看视频一区二区三区 | 另类二区| 日韩成人 | 精品国产一区二区三区日日嗨 | 亚洲精品视 | 在线日韩| 精品欧美一区二区三区久久久 | 九九热在线视频免费观看 | 国偷自产av一区二区三区 | 日韩一区二区三区av | 精品1区 | 亚洲一区二区三区福利 | 国产精品久久久免费 | 国产1区2区在线观看 | 亚洲欧美视频一区二区 | 97超碰成人 | 成年免费大片黄在线观看岛国 | 青青草一区二区三区 | 成人午夜免费福利视频 | 亚洲一区二区av | 中文精品视频 | 午夜久久久 | 久久国产一区二区三区 | 国内精品久久久久久影视8 最新黄色在线观看 | 亚洲精品久久久久久久久久久 | 成人网视频 | 国产东北一级毛片 | 免费久久精品 | 天堂色综合 | 国产三级精品三级在线观看四季网 | 日韩精品一区二区三区四区视频 |