国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby 中$開頭的變量介紹

2020-02-24 15:37:57
字體:
來源:轉載
供稿:網友

Ruby中充滿了隱藏變量,我們可以從這些預定義的全局變量中獲得一些有趣的信息,今天武林技術頻道小編和大家分享Ruby 中$開頭的變量介紹,希望對你學習有幫助!

全局進程變量

$$ 表示當前運行的 ruby 進程。

復制代碼 代碼如下:
>> $$
=> 17170


我們可以從當前進程殺死它自己

?

復制代碼 代碼如下:

?


>> `kill -9 #{$$}`
[1]??? 17170 killed???? irb


$? 表示最近一個子進程的狀態

?

?

?

異常和錯誤

$1 表示引起異常的信息。比如在這里 raise "there's no peanut butter",它的值就是 there's no peanut butter。

復制代碼 代碼如下:

>> begin raise "this town ain't big enough for the both of us" rescue puts $! end
this town ain't big enough for the both of us
=> nil


$@ 可以給出完整的引起錯誤的棧調用信息,它是一個數組。

?

?


>> begin raise 'no soup in kitchen' rescue $@.each { |trace| puts trace } end
(irb):13:in `irb_binding'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/workspace.rb:80:in `eval'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/workspace.rb:80:in `evaluate'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/context.rb:254:in `evaluate'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:159:in `block (2 levels) in eval_input'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:273:in `signal_status'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:156:in `block in eval_input'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:243:in `block (2 levels) in each_top_level_statement'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `loop'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `block in each_top_level_statement'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `catch'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `each_top_level_statement'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:155:in `eval_input'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:70:in `block in start'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:69:in `catch'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:69:in `start'
/home/meck/.rvm/rubies/ruby-1.9.3-p194/bin/>>'
=> ["(>>'"]

?


字符串和分隔符

$; 表示 String.split 里的分隔符,默認是空格。


$/ 表述讀取輸入的行分隔符。它被用在 Kernel.gets 里。它通常表示新行,但可以被修改。這個很難展示,因為 irb 依賴 /n 作為讀取分隔符,如果把 $/ 設置成 nil,gets 就會讀取整個文件。

?

$/ 正好相反,它是作為輸出的行分隔符。

?

文件

假設有個叫letter.text的文件:


$. 表示文件當前被讀取的行號。

?

復制代碼 代碼如下:

?


>> open('letter.txt').each { |line| puts "#{$.}: #{line}" }
1: Dear Caroline,
2: I think we need some honey for tea.
3: I also think that I may have misplaced my red tie, have you seen it?
4:
5: -Nick
=> #<File:letter.txt>


$_ 表示最后讀取的行。

?

?

?

匹配和正則表達式

$~ 表示最近一次正則匹配到的信息,如果有的話它就返回 MatchData 的示例,否則就是 nil。

復制代碼 代碼如下:

>> "the robots are coming, the robots are coming, the robots are coming" =~ /ro/
=> 4
>> $~
=> #<MatchData "ro">
>> $~.to_s
=> "ro"
>> "the robots are coming, the robots are coming, the robots are coming" =~ /cats/
=> nil
>> $~


$& 跟 $~ 非常相似,它返回最近一次匹配到的字符串。

?

復制代碼 代碼如下:

?


>> "the robots are coming, the robots are coming, the robots are coming" =~ /ro/
=> 4
>> $&


$' 表示匹配不分后面的字符串。

?

?

?

其他

$> 表示ruby 默認的輸出對象,用在 Kernel.print 里。

復制代碼 代碼如下:

>> $> =? $> = $stderr
=> #<IO:<STDERR>>
>> puts 'no no no'
no no no
=> nil
>> $> = $stdin
/home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:168:in `write': not opened for writing (IOError)
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:168:in `print'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:168:in `block (2 levels) in eval_input'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:273:in `signal_status'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:156:in `block in eval_input'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:243:in `block (2 levels) in each_top_level_statement'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `loop'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `block in each_top_level_statement'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `catch'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `each_top_level_statement'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:155:in `eval_input'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:70:in `block in start'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:69:in `catch'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/irb.rb:69:in `start'
??????? from /home/meck/.rvm/rubies/ruby-1.9.3-p194/bin/irb:12:in `<main>'


$* 可能是最常用全局變量,它表示包含傳給 ruby 文件的所有變量的數組,假設有個叫 argument_echoer.rb 文件:

?

復制代碼 代碼如下:

?


$*.each { |arg| puts arg }


運行它:

?

?

以上就是關于Ruby 中$開頭的變量介紹,如果你還想了解更多技術方面的知識,你可以來關注武林技術頻道網,武林技術頻道小編會為你服務。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 汾西县| 得荣县| 景泰县| 大兴区| 安远县| 大安市| 朝阳市| 怀宁县| 天柱县| 双鸭山市| 饶平县| 新源县| 康定县| 静安区| 宁晋县| 屯留县| 耿马| 酉阳| 大渡口区| 绍兴县| 吉木乃县| 桃园市| 桑植县| 广西| 喀喇沁旗| 郑州市| 周至县| 深泽县| 富锦市| 资阳市| 年辖:市辖区| 鱼台县| 东平县| 体育| 永德县| 大足县| 华蓥市| 衡东县| 浑源县| 高清| 邯郸县|