亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
Ruby用戶指南 3、開始 4、簡(jiǎn)單的例子 5、字符串 6、正則表達(dá)式 7、數(shù)組 8、回到那些簡(jiǎn)單的例子 9、流程控制 10、迭代器 11、面向?qū)ο笏季S 12、方法 13、類 14、繼承 15、重載方法 16、訪問控制 17、單態(tài)方法 18、模塊 19、過程對(duì)象 20、變量 21、全局變量 22、實(shí)變量 23、局部變量 24、類常量 25、異常處理:rescue 26、異常處理:ensure 27、存取器 28、對(duì)象的初始化 29、雜項(xiàng) RGSS入門教程 1、什么是RGSS 2、開始:最簡(jiǎn)單的腳本 3、數(shù)據(jù)類型:數(shù)字 4、數(shù)據(jù)類型:常量與變量 5、數(shù)據(jù)類型:字符串 6、控制語句:條件分歧語句 7、控制語句:循環(huán) 8、函數(shù) 9、對(duì)象與類 10、顯示圖片 11、數(shù)組 12、哈希表(關(guān)聯(lián)數(shù)組) 13、類 14、數(shù)據(jù)庫(kù) 15、游戲?qū)ο?/a> 16、精靈的管理 17、窗口的管理 18、活動(dòng)指令 19、場(chǎng)景類 Programming Ruby的翻譯 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 類,對(duì)象和變量 容器Containers,塊Blocks和迭代Iterators 標(biāo)準(zhǔn)類型 深入方法 表達(dá)式Expressions 異常,捕捉和拋出(已經(jīng)開始,by jellen) 模塊 基本輸入輸出 線程和進(jìn)程 當(dāng)遭遇挫折 Ruby和它的世界 Ruby和Web開發(fā) Ruby Tk Ruby 和微軟的 Windows 擴(kuò)展Ruby Ruby語言 (by jellen) 類和對(duì)象 (by jellen) Ruby安全 反射Reflection 內(nèi)建類和方法 標(biāo)準(zhǔn)庫(kù) OO設(shè)計(jì) 網(wǎng)絡(luò)和Web庫(kù) Windows支持 內(nèi)嵌文檔 交互式Ruby Shell 支持 Ruby參考手冊(cè) Ruby首頁 卷首語 Ruby的啟動(dòng) 環(huán)境變量 對(duì)象 執(zhí)行 結(jié)束時(shí)的相關(guān)處理 線程 安全模型 正則表達(dá)式 字句構(gòu)造 程序 變量和常數(shù) 字面值 操作符表達(dá)式 控制結(jié)構(gòu) 方法調(diào)用 類/方法的定義 內(nèi)部函數(shù) 內(nèi)部變量 內(nèi)部常數(shù) 內(nèi)部類/模塊/異常類 附加庫(kù) Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術(shù)語集 Ruby的運(yùn)行平臺(tái) pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
watak

內(nèi)部變量

本參考手冊(cè)使用下列術(shù)語.

全局變量

所有以`$'開頭的變量

內(nèi)部變量

全局變量中的內(nèi)部變量(本網(wǎng)頁介紹的變量)

特殊變量

內(nèi)部變量中,形如"`$' + 1位數(shù)字或符號(hào)"的變量

選項(xiàng)變量

內(nèi)部變量中,由命令行選項(xiàng)設(shè)定的變量,形如"`$-' +1個(gè)選項(xiàng)字符"

有時(shí),內(nèi)部變量(有特殊的功能和用途)的有效作用域不只限于全局,盡管如此,上述定義還是把它們劃入到全局變量的范疇中(可以在任何地方使用內(nèi)部變量,從這種意義上說它們是全局的,但它們的值并不只限于全局).

根據(jù)變量值的作用域的不同,大致將內(nèi)部變量劃分如下.

局部域

下列也可看做是線程內(nèi)的局部變量.

$_

getsreadline最后讀入的字符串.若遇到EOF則為nil.該變量的作用域是局部域.(記憶方法:與 Perl相同)

$&

在當(dāng)前作用域中,正則表達(dá)式最后一次匹配成功的字符串.若最后一次匹配失敗,則為nil.(記憶方法: 它和某些編輯器中的&是相同的)

等同于Regexp.last_match[0].

$~

在當(dāng)前作用域中,最后一次匹配成功的相關(guān)信息(MatchData對(duì)象).若對(duì)其進(jìn)行設(shè)定的話, 則$&以及$1 ... $9等的值也會(huì)發(fā)生變化.

可以使用$~[n]的形式從該數(shù)據(jù)中抽取第n個(gè)匹配結(jié)果($n).(記憶方法: ~ 是用來進(jìn)行匹配的)

等同于Regexp.last_match.

$`

在當(dāng)前作用域中,正則表達(dá)式最后一次匹配成功的字符串前面的字符串.若最后的匹配失敗則為nil.(記憶方法: `被放在字符串前面)

等同于Regexp.last_match.pre_match.

$'

在當(dāng)前作用域中,正則表達(dá)式最后一次匹配成功的字符串后面的字符串.若最后的匹配失敗則為nil.(記憶方法: '被放在字符串后面)

等同于Regexp.last_match.post_match.

$+

在當(dāng)前作用域中,正則表達(dá)式最后一次匹配成功的字符串部分中,與最后一個(gè)括號(hào)相對(duì)應(yīng)的那部分字符串.若最后的匹配失敗則為nil.在多項(xiàng)選擇型匹配模型中,若您無法斷定是哪個(gè)部分匹配成功時(shí),該變量將會(huì)非常有用.(記憶方法: be positive and forward looking.)

$1
$2
$3 ...

分別存儲(chǔ)著最后一次模型匹配成功時(shí)與第n個(gè)括號(hào)相匹配的值.若沒有相應(yīng)的括號(hào)時(shí),其值為nil.(記憶方法: 類似于 \數(shù)字)

等同于Regexp.last_match[1], Regexp.last_match[2],...

線程局部域

下列變量在一個(gè)線程內(nèi)部時(shí)是全局域變量,但在不同的線程之間是彼此獨(dú)立的.

$?

本線程中最后結(jié)束的子進(jìn)程的狀態(tài)值. 1.6版本以前是整數(shù),從1.7版本開始變?yōu)?font color="blue">Process::Status對(duì)象.另外,請(qǐng)參考Process#wait等.

整數(shù)值就是使用wait()系統(tǒng)調(diào)用所獲得的值,要想得到子進(jìn)程的exit status的話,還得除以256($?/256). 1.7版本以后還可以使用Process::Status#exitstatus.

$!

最近發(fā)生的異常的信息.由raise設(shè)定.

$@

以數(shù)組形式保存著發(fā)生異常時(shí)的back trace信息. 數(shù)組元素是字符串,它顯示了方法調(diào)用的位置,其形式為

"filename:line"

"filename:line:in `methodname'"

這和caller的返回值形式一致。

在向$@賦值時(shí),$!不能為nil。調(diào)用$@的方法與$!.backtrace相同。而賦值方法與$!.set_backtrace相同。

(記憶方法:where exception occurred at.)

$SAFE

當(dāng)前線程的安全等級(jí)。關(guān)于安全等級(jí),請(qǐng)參考安全模型。

Thread.current.safe_level相同。

全局域

$=

obsolete: 該變量將被廢止。

說明在模式匹配或字符串比較中是否要區(qū)分大小寫字母的標(biāo)識(shí)。默認(rèn)值為nil。

$/

輸入記錄分隔符。默認(rèn)值為"\n"。其運(yùn)作類似于awk的RS變量。

若將該變量設(shè)為 nil 時(shí),將一次讀入整個(gè)文件。若設(shè)為空字符串 "" 則將是段落模式,此時(shí)會(huì)把2個(gè)以上的連續(xù)的換行符當(dāng)作記錄切分符。

不能在$/中使用正則表達(dá)式。

(記憶方法: 在詩(shī)歌中使用 / 作為行的切分)

$\

輸出記錄分隔符。print會(huì)在最后輸出該字符串。

默認(rèn)值為nil,此時(shí)不會(huì)輸出任何字符。

$,

默認(rèn)的切分字符。若Array#join中省略了參數(shù)時(shí)或在print的各個(gè)參數(shù)間將會(huì)輸出它。

默認(rèn)值為 nil ,等同于空字符串。

$;

當(dāng)String#split中省略參數(shù)時(shí)的切分字符。默認(rèn)值為nil,此時(shí)將進(jìn)行特殊的分割。詳情請(qǐng)參考String#split。

ruby 1.8 feature:在1.6版本中只能把字符串賦值給$;。在1.8版本中則可以將任何對(duì)象代入其中,但考慮到String#split的變更問題,還是應(yīng)該使用正則表達(dá)式。

同時(shí),為了提供兼容性,最好不要依賴于 $; 。

$.

最后讀入的輸入文件的行號(hào)。

ARGF.lineno相同。若需要取得每個(gè)參數(shù)文件的行號(hào)時(shí),需要使用ARGF.file.lineno。

$<

由參數(shù)(若沒的話就使用標(biāo)準(zhǔn)輸入)構(gòu)成的虛擬文件。也就是常數(shù)ARGF的別名。(記憶方法: <指定了shell的輸入源)

$deferr ((<ruby 1.8 特性>)) ((<obsolete>))

Ruby解釋器輸出錯(cuò)誤信息、警告信息和warn時(shí)的輸出對(duì)象。

只能將內(nèi)部帶有write方法的對(duì)象賦值給該變量。(warn 等內(nèi)部方法最終將調(diào)用$deferr.write方法)。

$deferr 是 $stderr 的別名。$deferr (盡管它剛出現(xiàn)不久) 將被廢止。

$>
$defout ((<obsolete>))

內(nèi)部函數(shù)print、putsp等的默認(rèn)輸出對(duì)象。初始值為STDOUT。若指定了-i[extension]選項(xiàng)的話,則將使用與讀取源同名的文件。(記憶方法: >指定了shell的輸出對(duì)象)

只能將內(nèi)部帶有write方法的對(duì)象賦值給該變量(print等內(nèi)部方法最終將調(diào)用write方法)。

若想改變print等Ruby內(nèi)部函數(shù)的輸出對(duì)象時(shí),可以將該變量的值設(shè)定為別的IO即可。若想要改變子進(jìn)程或C語言擴(kuò)展庫(kù)的標(biāo)準(zhǔn)輸出時(shí),則必須使用IO#reopen將標(biāo)準(zhǔn)輸出重定向(redirect)到別的IO。請(qǐng)參考$stdout。

ruby 1.8 特性:

$defout 是 $stdout 的別名。$defout 是obsolete

$0
$PROGRAM_NAME ((<ruby 1.8 特性>))

當(dāng)前運(yùn)行中的Ruby腳本名.根據(jù)OS的不同,有時(shí)向該變量賦值后,ps(1)的輸出會(huì)發(fā)生變化.該功能適合于用來表示當(dāng)前程序的狀態(tài).(記憶方法: 與sh 或 ksh 相同)

$*

傳遞給Ruby腳本的參數(shù).內(nèi)部常數(shù)ARGV的別名.Ruby自身用的參數(shù)已經(jīng)被摘除.(記憶方法: 與sh 或 ksh 相同)

$$

當(dāng)前運(yùn)行中的Ruby進(jìn)程的pid。(記憶方法: 與shell相同)

Process.pid相同.

$:
$LOAD_PATH

包含一個(gè)數(shù)組,其內(nèi)容是loadrequire加載文件時(shí)用的搜索目錄列表.(記憶方法: 冒號(hào)是環(huán)境變量PATH的切分符)

包含下列內(nèi)容:啟動(dòng)時(shí)-I directory 選項(xiàng)所指定的目錄,環(huán)境變量RUBYLIB的值,編譯時(shí)指定的默認(rèn)值還有"."(當(dāng)前目錄).下列就是典型的UNIX系統(tǒng)上的加載路徑.

-I 指定的路徑
環(huán)境變量 RUBYLIB 的值
/usr/local/lib/ruby/site_ruby/VERSION        site固有的,取決于VERSION的庫(kù)
/usr/local/lib/ruby/site_ruby/VERSION/ARCH   site固有的,取決于系統(tǒng)的擴(kuò)展庫(kù)
/usr/local/lib/ruby/site_ruby                site固有的庫(kù)
/usr/local/lib/ruby/VERSION                  標(biāo)準(zhǔn)庫(kù)
/usr/local/lib/ruby/VERSION/ARCH             標(biāo)準(zhǔn)的,取決于系統(tǒng)的擴(kuò)展庫(kù)
.                                            當(dāng)前目錄

上表中的VERSION是表示Ruby版本的字符串,如"1.6"或"1.8"等.ARCH是表示硬件和OS的字符串,如"i686-linux"或"alpha-osf5.1"等.可以從Config::CONFIG['arch']中得到這些信息.

在多數(shù)UNIX系統(tǒng)中,編譯時(shí)的默認(rèn)路徑是"/usr/local/lib/ruby".在mswin32,mingw32,cygwin,bccwin32,mswince這些環(huán)境中,是以ruby.dll所在位置為起點(diǎn)的相對(duì)路徑.而在djgpp,emx(OS/2)中,則是以ruby.exe所在位置為起點(diǎn)的相對(duì)路徑.

在使用-T 選項(xiàng)啟動(dòng)時(shí),若將$SAFE設(shè)為1以上的值的話,則"." (當(dāng)前目錄)不會(huì)被納入加載路徑.

require 'foo'時(shí),將交互搜索.rb和.so.

/usr/local/lib/ruby/site_ruby/VERSION/foo.rb
/usr/local/lib/ruby/site_ruby/VERSION/foo.so
/usr/local/lib/ruby/site_ruby/VERSION/ARCH/foo.rb
/usr/local/lib/ruby/site_ruby/VERSION/ARCH/foo.so
  :
  :

有的系統(tǒng)的共享庫(kù)擴(kuò)展名并非.so,此時(shí)將自動(dòng)使用新的擴(kuò)展名.例如在HP-UX上require 'foo.so'時(shí)將搜索foo.sl.因此在Ruby內(nèi)部,可以一直使用.so.

若想用命令行查看加載路徑的話,可以這樣

$ ruby -e 'puts $:'

即可.

$"
$LOADED_FEATURES ((<ruby 1.8 特性>))

包含以require加載的文件名的數(shù)組.這可以防止require多次加載同一個(gè)文件.

$DEBUG

若此值為真則變成調(diào)試模式。它由-d選項(xiàng)進(jìn)行設(shè)定。

調(diào)試模式與普通的運(yùn)行有以下不同。

  • 若某線程因發(fā)生異常而結(jié)束時(shí),整個(gè)解釋器也將中止工作。這等同于將Thread.abort_on_exception設(shè)置為true的效果,但是在調(diào)試模式中,即使在腳本中使用 abort_on_exception= 類方法來重置標(biāo)識(shí)也無法取消該效果。

    在通常的運(yùn)行中,若某線程發(fā)生了異常卻并沒有被Thread#join等檢測(cè)到的話,該線程將被無警告地終止。

  • 不管有沒有捕捉到異常,只要它一旦發(fā)生就會(huì)被報(bào)告到 $stderr 。處理會(huì)繼續(xù)進(jìn)行。
$FILENAME

虛擬文件ARGF中,當(dāng)前正在讀入的(gets方法正在讀的)文件名。與ARGF.filename相同。

$LOAD_PATH

$:的別名。

$stdin
$stdout
$stderr

標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤輸出。

ruby 1.8 特性

$stdout, $stderr 是 $defout,$deferr 的別名。($defout, $deferr 已經(jīng)廢止)

$stdout, $stderr的對(duì)應(yīng)對(duì)象中必須要有名為write的方法。詳細(xì)情況請(qǐng)參考defout,deferr

$stdin同$stdout、$stderr一樣,即使沒有特定的方法也可以對(duì)其賦值。若執(zhí)行gets等方法時(shí),該方法將被投射到$stdin對(duì)應(yīng)的對(duì)象中。(將執(zhí)行$stdin.gets)

$stdin所對(duì)應(yīng)的對(duì)象中應(yīng)該定義下列方法。(請(qǐng)根據(jù)需要取舍)

gets, readline, readlines, getc, readchar, tell, seek,
pos=, rewind, fileno, to_io, eof, each_line, each_byte,
binmode, closed?

例:

$stdin = Object.new
def $stdin.gets
  "foo"
end
p gets

# => "foo"

若想對(duì)標(biāo)準(zhǔn)輸入、輸出、錯(cuò)誤輸出等進(jìn)行重定向(redirect)時(shí),可以使用IO#reopen(1.6版也是如此)。例如

$stdout = File.open("/tmp/foo", "w")

寫成這樣

STDOUT.reopen("/tmp/foo", "w")

就可以了。若想取消重定向時(shí)

stdout_sv = STDOUT.dup          # 保存 STDOUT
STDOUT.reopen("/tmp/foo")       # 將 STDOUT 重定向到 /tmp/foo

puts "foo"                      # 輸出到 /tmp/foo

STDOUT.flush                    # 必須(?)
STDOUT.reopen(stdout_sv)        # 恢復(fù)原狀

就可以了。若您不想讓重定向影響到子進(jìn)程的話,只要向$stdout等賦值就足夠了。

# 改變輸出方法的默認(rèn)輸出對(duì)象
$stdout = File.open("/tmp/foo", "w")

puts "foo"

# 取回輸出方法的默認(rèn)輸出對(duì)象。
$stdout = STDOUT

ruby 1.6 特性: 向$stdin、$stdout、$stderr賦值時(shí),會(huì)進(jìn)行重定向。

ruby 1.7 特性: 暫時(shí)修改了重定向的運(yùn)作方式[ruby-dev:14601]

$VERBOSE

冗長(zhǎng)消息標(biāo)識(shí)。由面向Ruby解釋器的-v選項(xiàng)進(jìn)行設(shè)定。

ruby 1.8 特性

警告等級(jí)分為三級(jí),分別如下。

  • nil: 不輸出警告
  • false: 只輸出重要警告(默認(rèn))
  • true: 輸出所有警告

可以使用命令行選項(xiàng)-W[level]來指定警告等級(jí),分別為-W0、-W1、-W2 (or -W)。指定-v-w時(shí),等同于-W2。

若設(shè)定為nil、false之外的值時(shí),其值為變?yōu)閠rue。

$KCODE

Ruby可識(shí)別的多字節(jié)字符串的編碼。變量值為"EUC" "SJIS" "UTF8" "NONE"之一。

當(dāng)$KCODE的值為"EUC"時(shí),將假定字符串或正則表達(dá)式的編碼為EUC-JP。同樣地,若為"SJIS"時(shí)則認(rèn)定為Shift JIS。若為"UTF8"時(shí)則認(rèn)定為UTF-8。若為"NONE"時(shí),將不會(huì)識(shí)別多字節(jié)字符串。

在向該變量賦值時(shí),只有第1個(gè)字節(jié)起作用,且不區(qū)分大小寫字母。"e" "E" 代表 "EUC","s" "S" 代表 "SJIS","u" "U" 代表 "UTF8",而"n" "N" 則代表 "NONE"。

默認(rèn)值為"NONE"。

[參考]

目前$KCODE將對(duì)Ruby的下列動(dòng)作產(chǎn)生影響。

  • 解釋器的字句解析器
  • Regexp的編碼標(biāo)識(shí)的默認(rèn)值
  • (正則表達(dá)式字面值
  • Regexp.new)
  • upcase
  • downcase
  • swapcase
  • capitalize
  • inspect
  • split
  • gsub
  • scan

選項(xiàng)變量

用來顯示Ruby解釋器命令行信息的變量。其形式為$-?,?的部分是1位選項(xiàng)字符。

$-0

$/ 的別名。

$-a

若指定了-a時(shí),其值為真。只讀變量。

$-d

$DEBUG 的別名。

$-F

$; 的別名。

$-i

若指定了-i[extension]時(shí),它將保存擴(kuò)展名字符串。否則其值為nil。也可以在腳本中對(duì)其進(jìn)行賦值,此時(shí)將在開始讀入ARGV中的下一個(gè)文件之前進(jìn)行in-place替換。

$-I

$LOAD_PATH 的別名。

$-K

$KCODE 的別名。

$-l

若指定了-l時(shí),其值為真。只讀變量。

$-p

若指定了-p時(shí),其值為真。只讀變量。

$-v
$-w

$VERBOSE 的別名。

$-W ((<ruby 1.9 特性>))

返回由-W[level]指定的值。

也就是說,根據(jù)$VERBOSE的取值不同

  • nil: 不輸出警告 -> 0
  • false: 只輸出重要警告(默認(rèn)) -> 1
  • true: 輸出所有警告 -> 2

而返回上述諸值之一。只讀變量。


Artikel sebelumnya: Artikel seterusnya: