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

簡要分析Ruby局部域變量

開發(fā) 開發(fā)工具
Ruby局部域變量一般都是在某一個線程作用域之內才能湊效。比如:$_ ;$& ;$~ ;$`;$' ;$+ ;$1 ;$2 ;$3等等。

Ruby作為一個靈活性較強的語言,內置了許多內部變量,不同的變量可以實現不同的功能,熟練的掌握這些變量的運用,可以方便我們編程。 #t#

Ruby局部域變量就是其中之一。

在某一個線程作用域內才能有效,下列也可看做是線程內的局部變量.
PS:這邊講解的幾個變量都是于正則匹配相關的,正則匹配過程的代碼是一樣的,這里不重復輸入正則表達式匹配的代碼,只在***個例子里給出完整的輸入和輸出,之后的例子只直接輸出變量的值

Ruby局部域變量之$_

gets或readline***讀入的字符串.若遇到EOF則為nil.該變量的作用域是局部域. 

  1. irb(main):006:0> $_   
  2. => nil   
  3. irb(main):007:0> gets   
  4. foobar   
  5. => "foobar\n"   
  6. irb(main):008:0> $_   
  7. => "foobar\n"   

 

Ruby局部域變量之$&

在當前作用域中,正則表達式***一次匹配成功的字符串.若***一次匹配失敗,則為nil. 

  1. irb(main):002:0> $&   
  2. => nil   
  3. irb(main):010:0> /(foo)(bar)(BAZ)?/
     =~ "foobarbaz"   
  4. => 0   
  5. irb(main):011:0> $&   
  6. => "foobar"   

 

Ruby局部域變量之$~

在當前作用域中,***一次匹配成功的相關信息(MatchData對象-為處理與正則表達式的匹配過程相關的信息而設置的類.).
可以使用$~[n]的形式從該數據中抽取第n個匹配結果($n).相當于是$1,$2...
等同于Regexp.last_match. 

  1. irb(main):012:0> $~   
  2. => #<MatchData "foobar" 1:
    "foo" 2:"bar" 3:nil
    >   
  3. irb(main):026:0> $1   
  4. => "foo"   
  5. irb(main):027:0> $~[1]   
  6. => "foo"   

 

Ruby局部域變量之$`

在當前作用域中,正則表達式***一次匹配成功的字符串前面的字符串.若***的匹配失敗則為nil.
等同于Regexp.last_match.pre_match.

  1. irb(main):016:0> $`  
  2. => "" #由于***匹配成功的內容是
    foobar,輸入的字符串前面沒有別
    的字符所以是"" 

Ruby局部域變量之$'

在當前作用域中,正則表達式***一次匹配成功的字符串后面的字符串.若***的匹配失敗則為nil.
等同于Regexp.last_match.post_match. 

  1. irb(main):028:0> $'   
  2. => "baz" 

Ruby局部域變量之$+

在當前作用域中,正則表達式***一次匹配成功的字符串部分中,與***一個括號相對應的那部分字符串.若***的匹配失敗則為nil.在多項選擇型匹配模型中,若您無法斷定是哪個部分匹配成功時,該變量將會非常有用.

  1. irb(main):029:0> $+   
  2. => "bar" 

 

Ruby局部域變量之$1
$2
$3 ...

分別存儲著***一次模型匹配成功時與第n個括號相匹配的值.若沒有相應的括號時,其值為nil.等同于Regexp.last_match[1], Regexp.last_match[2],... 
 

  1. irb(main):030:0> $1   
  2. => "foo"   
  3. irb(main):031:0> $2   
  4. => "bar"   
  5. irb(main):032:0> $3   
  6. => nil  

 

責任編輯:曹凱 來源: javaeye.com
相關推薦

2009-12-14 14:32:50

Ruby線程局部域變量

2009-12-15 10:48:54

Ruby局部變量

2009-12-14 13:19:07

Ruby字符串

2009-12-14 13:56:12

Ruby特點

2009-09-17 13:05:38

Linq局部變量類型

2018-05-14 09:15:24

Python變量函數

2009-09-01 15:25:01

C#位域

2009-12-18 09:43:32

Ruby偽變量

2010-04-01 09:26:31

2009-09-21 13:42:47

Hibernate查詢

2009-12-14 18:30:59

Ruby DSL特點

2009-08-26 16:37:07

C#迭代器局部變量

2009-12-18 14:35:01

Ruby奇特變量

2009-12-14 14:40:10

Ruby全局域變量

2009-11-02 17:12:01

VB和VB.NET

2024-05-29 08:49:22

Python全局變量局部變量

2011-04-18 09:31:35

JavaScript

2015-01-07 14:41:32

Android全局變量局部變量

2009-12-14 14:50:46

Ruby傳參數

2009-12-17 17:04:09

Ruby函數參數傳遞
點贊
收藏

51CTO技術棧公眾號