国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

內部變量

本參考手冊使用下列術語.

全局變量

所有以`$'開頭的變量

內部變量

全局變量中的內部變量(本網頁介紹的變量)

特殊變量

內部變量中,形如"`$' + 1位數字或符號"的變量

選項變量

內部變量中,由命令行選項設定的變量,形如"`$-' +1個選項字符"

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

根據變量值的作用域的不同,大致將內部變量劃分如下.

局部域

下列也可看做是線程內的局部變量.

$_

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

$&

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

等同于Regexp.last_match[0].

$~

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

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

等同于Regexp.last_match.

$`

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

等同于Regexp.last_match.pre_match.

$'

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

等同于Regexp.last_match.post_match.

$+

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

$1
$2
$3 ...

分別存儲著最后一次模型匹配成功時與第n個括號相匹配的值.若沒有相應的括號時,其值為nil.(記憶方法: 類似于 \數字)

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

線程局部域

下列變量在一個線程內部時是全局域變量,但在不同的線程之間是彼此獨立的.

$?

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

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

$!

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

$@

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

"filename:line"

"filename:line:in `methodname'"

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

在向$@賦值時,$!不能為nil。調用$@的方法與$!.backtrace相同。而賦值方法與$!.set_backtrace相同。

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

$SAFE

當前線程的安全等級。關于安全等級,請參考安全模型。

Thread.current.safe_level相同。

全局域

$=

obsolete: 該變量將被廢止。

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

$/

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

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

不能在$/中使用正則表達式。

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

$\

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

默認值為nil,此時不會輸出任何字符。

$,

默認的切分字符。若Array#join中省略了參數時或在print的各個參數間將會輸出它。

默認值為 nil ,等同于空字符串。

$;

String#split中省略參數時的切分字符。默認值為nil,此時將進行特殊的分割。詳情請參考String#split。

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

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

$.

最后讀入的輸入文件的行號。

ARGF.lineno相同。若需要取得每個參數文件的行號時,需要使用ARGF.file.lineno。

$<

由參數(若沒的話就使用標準輸入)構成的虛擬文件。也就是常數ARGF的別名。(記憶方法: <指定了shell的輸入源)

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

Ruby解釋器輸出錯誤信息、警告信息和warn時的輸出對象。

只能將內部帶有write方法的對象賦值給該變量。(warn 等內部方法最終將調用$deferr.write方法)。

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

$>
$defout ((<obsolete>))

內部函數printputsp等的默認輸出對象。初始值為STDOUT。若指定了-i[extension]選項的話,則將使用與讀取源同名的文件。(記憶方法: >指定了shell的輸出對象)

只能將內部帶有write方法的對象賦值給該變量(print等內部方法最終將調用write方法)。

若想改變print等Ruby內部函數的輸出對象時,可以將該變量的值設定為別的IO即可。若想要改變子進程或C語言擴展庫的標準輸出時,則必須使用IO#reopen將標準輸出重定向(redirect)到別的IO。請參考$stdout。

ruby 1.8 特性:

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

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

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

$*

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

$$

當前運行中的Ruby進程的pid。(記憶方法: 與shell相同)

Process.pid相同.

$:
$LOAD_PATH

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

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

-I 指定的路徑
環(huán)境變量 RUBYLIB 的值
/usr/local/lib/ruby/site_ruby/VERSION        site固有的,取決于VERSION的庫
/usr/local/lib/ruby/site_ruby/VERSION/ARCH   site固有的,取決于系統的擴展庫
/usr/local/lib/ruby/site_ruby                site固有的庫
/usr/local/lib/ruby/VERSION                  標準庫
/usr/local/lib/ruby/VERSION/ARCH             標準的,取決于系統的擴展庫
.                                            當前目錄

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

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

在使用-T 選項啟動時,若將$SAFE設為1以上的值的話,則"." (當前目錄)不會被納入加載路徑.

require 'foo'時,將交互搜索.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
  :
  :

有的系統的共享庫擴展名并非.so,此時將自動使用新的擴展名.例如在HP-UX上require 'foo.so'時將搜索foo.sl.因此在Ruby內部,可以一直使用.so.

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

$ ruby -e 'puts $:'

即可.

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

包含以require加載的文件名的數組.這可以防止require多次加載同一個文件.

$DEBUG

若此值為真則變成調試模式。它由-d選項進行設定。

調試模式與普通的運行有以下不同。

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

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

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

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

$LOAD_PATH

$:的別名。

$stdin
$stdout
$stderr

標準輸入,標準輸出,標準錯誤輸出。

ruby 1.8 特性

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

$stdout, $stderr的對應對象中必須要有名為write的方法。詳細情況請參考defout,deferr。

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

$stdin所對應的對象中應該定義下列方法。(請根據需要取舍)

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"

若想對標準輸入、輸出、錯誤輸出等進行重定向(redirect)時,可以使用IO#reopen(1.6版也是如此)。例如

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

寫成這樣

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

就可以了。若想取消重定向時

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

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

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

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

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

puts "foo"

# 取回輸出方法的默認輸出對象。
$stdout = STDOUT

ruby 1.6 特性: 向$stdin、$stdout、$stderr賦值時,會進行重定向。

ruby 1.7 特性: 暫時修改了重定向的運作方式[ruby-dev:14601]。

$VERBOSE

冗長消息標識。由面向Ruby解釋器的-v選項進行設定。

ruby 1.8 特性

警告等級分為三級,分別如下。

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

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

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

$KCODE

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

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

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

默認值為"NONE"。

[參考]

目前$KCODE將對Ruby的下列動作產生影響。

  • 解釋器的字句解析器
  • Regexp的編碼標識的默認值
  • (正則表達式字面值
  • Regexp.new)
  • upcase
  • downcase
  • swapcase
  • capitalize
  • inspect
  • split
  • gsub
  • scan

選項變量

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

$-0

$/ 的別名。

$-a

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

$-d

$DEBUG 的別名。

$-F

$; 的別名。

$-i

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

$-I

$LOAD_PATH 的別名。

$-K

$KCODE 的別名。

$-l

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

$-p

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

$-v
$-w

$VERBOSE 的別名。

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

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

也就是說,根據$VERBOSE的取值不同

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

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


Previous article: Next article: