自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

全方位解讀Ruby局部變量應(yīng)用

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

Ruby語言中部高,存在著一些變量。對于一個初步學(xué)習(xí)Ruby語言的朋友來說,應(yīng)該熟練的掌握這些變量的運(yùn)用。下面就為大家介紹一下Ruby局部變量的應(yīng)用技巧。#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解釋器會認(rèn)為那是一個方法的名字;正如上面所見錯誤信息的. 一般的,局部變量的范圍會是

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

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

下面的Ruby局部變量例子,define?是一個檢查標(biāo)識符是否已定義的操作符.如果已定義它將返回標(biāo)識符的描述,否則返回nil.正如你所見的,bar的范圍是 loop的局部變量;當(dāng)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  

 

一個范圍內(nèi)的過程對象共享這個范圍內(nèi)的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, 調(diào)用 p2
也將導(dǎo)致"未定義局部變量或方法"錯誤.
過程對象的強(qiáng)大在于它們能被作為參數(shù)傳遞:共享的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對待范圍的辦法相當(dāng)聰明.顯然,上面例子里 contents 變量是由 reader 和 writer 共享的.我們也可以像上面那樣創(chuàng)造多對使用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局部變量的一些詳細(xì)介紹。

責(zé)任編輯:曹凱 來源: jb51.net
相關(guān)推薦

2009-12-15 10:10:42

Ruby過程對象

2009-12-16 17:07:27

Ruby on Rai

2009-12-14 17:04:13

Ruby讀寫UNIX命

2009-12-16 09:29:26

Ruby布爾表達(dá)式

2010-01-04 14:06:35

Silverlight

2009-09-17 13:05:38

Linq局部變量類型

2009-12-21 13:06:05

WCF Address

2009-12-15 17:28:11

Ruby自動化腳本框架

2014-06-26 17:25:22

車聯(lián)網(wǎng) ECU

2010-01-27 13:52:15

Android多媒體框

2011-10-26 09:28:28

紅帽大數(shù)據(jù)Gluster

2009-12-08 10:33:23

PHP應(yīng)用問題

2009-08-26 16:37:07

C#迭代器局部變量

2017-09-13 15:37:53

2010-01-05 09:57:34

.NET Framew

2024-05-10 14:35:56

人工智能大型語言模型

2018-05-14 09:15:24

Python變量函數(shù)

2009-12-21 15:48:29

WCF應(yīng)用程序

2009-10-12 14:13:00

VB.NET使用局部變

2009-09-11 10:07:05

Linq隱式類型化局部
點贊
收藏

51CTO技術(shù)棧公眾號