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

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

字面值

  • 數(shù)值字面值
  • 字符串字面值
    • 反斜線(xiàn)表示法
    • 展開(kāi)式
  • 命令輸出
  • 集成字符串(here document)
  • 正則表達(dá)式字面值
  • 數(shù)組表達(dá)式
  • 哈希表表達(dá)式
  • 范圍對(duì)象
  • 符號(hào)
  • %表示法

我們把形如數(shù)字1或字符串“hello world”這樣可以直接寫(xiě)入Ruby程序中的值叫做字面值。

數(shù)值字面值

123
0d123 ruby 1.7 特性

整數(shù)

-123

有符號(hào)整數(shù) trap::Numeric

123.45

浮點(diǎn)數(shù) ruby 1.8 特性: 不能把0.1寫(xiě)成".1",而只能完整地寫(xiě)為0.1。

1.2e-3

浮點(diǎn)數(shù)

0xffff

16進(jìn)制整數(shù)

0b1011

2進(jìn)制整數(shù)

0377
0o377 ruby 1.7 特性

8進(jìn)制整數(shù)

?a

字符a的代碼(97)

ruby 1.7 特性: 用在空白類(lèi)字符上時(shí),必須寫(xiě)成這樣,?\s、?\t等。

?\C-a

Control a 的代碼(1)

?\M-a

Meta a 的代碼(225)

?\M-\C-a

Meta-Control a 的代碼(129)

?句中,所有的反斜線(xiàn)表示法都是有效的。

您可以在除了字符代碼以外的數(shù)值字面值中插入“_”。Ruby解釋器會(huì)忽視“_”而不作處理。當(dāng)數(shù)值位數(shù)非常多時(shí),使用“_”會(huì)讓您快速看清其位數(shù)。但是不能在字面值的前面或后面插入“_”(若在字面值前面(包括(+,-)號(hào)與字面值間的位置)插入_時(shí),它會(huì)被誤認(rèn)成局部變量或方法調(diào)用)。

1_000_000_000  => 1000000000
0xffff_ffff  => 0xffffffff

字符串字面值

例:

"this is a string expression\n"
'this is a string expression\n'
%q!I said, "You said, 'She said it.'"!
%!I said, "You said, 'She said it.'"!
%Q('This is it.'\n)

字符串被雙引號(hào)或單引號(hào)包圍著。在被雙引號(hào)中括起來(lái)的字符串中,反斜線(xiàn)表示法和展開(kāi)式(后面詳述)都是有效的。在被單引號(hào)括起來(lái)的字符串中,除了\\(反斜線(xiàn)本身)、\'(單引號(hào))和行尾的\(忽略換行)以外,不會(huì)對(duì)字符串內(nèi)容作任何處理。

中間留有空白的字符串在編譯時(shí)會(huì)被當(dāng)作1個(gè)字符串字面值來(lái)處理。

p "foo" "bar"
=> "foobar"

還有其他一些使用%表示法的字符串項(xiàng)目。

每次對(duì)字符串表達(dá)式進(jìn)行計(jì)算時(shí)都會(huì)生成新的字符串對(duì)象。

反斜線(xiàn)表示法

\t

Tab(0x09)

\n

換行(0x0a)

\r

回車(chē)(0x0d)

\f

換頁(yè)(0x0c)

\b

BackSpace(0x08)

\a

Bell (0x07)

\e

Escape(0x1b)

\s

空白(0x20)

\nnn

8 進(jìn)制數(shù)表示 (n 為 0-7)

\xnn

16 進(jìn)制數(shù)表示 (n 為 0-9,a-f)

\cx
\C-x

Control字符 (x 為 ASCII 字符)

\M-x

Meta x (c | 0x80)

\M-\C-x

Meta Control x

\x

字符 x 本身

展開(kāi)式

例:

(假設(shè)$ruby = "RUBY")

   "my name is #{$ruby}" #=> "my name is RUBY"
   'my name is #{$ruby}' #=> "my name is #{$ruby}"

在以雙引號(hào)(")括起來(lái)的字符串表達(dá)式、命令字符串以及正則表達(dá)式中,可以使用“#{表達(dá)式}”把表達(dá)式的內(nèi)容(以字符串的形式)嵌入其中。若表達(dá)式是以($,@)開(kāi)始的變量的話(huà),則可以省略{}部分,只使用“#變量名”的形式即可。如果在字符#后出現(xiàn)的是“{,$,@”以外的其他字符的話(huà),字符#仍代表"#"本身。若想顯式地阻止展開(kāi)式的話(huà),在#前添加反斜線(xiàn)即可。

展開(kāi)式中可以包括雙引號(hào)和其他的Ruby表達(dá)式。注釋也可以納入其中。

p "#{ "string" # comment }"   # => "string"

ruby 1.7 特性: 在version 1.7中,展開(kāi)式中的注釋內(nèi)容開(kāi)始于“#”終止在行尾,而非“}”。因此,上例應(yīng)該寫(xiě)成

p "#{ "string" # comment
  }"                          # => "string"

這個(gè)樣子。

命令輸出

例:

`date`
%x{ date }

被后引號(hào)(`)括起來(lái)的字符串與被雙引號(hào)括起來(lái)的字符串是一樣的。首先會(huì)處理其中的反斜線(xiàn)表示法和展開(kāi)式,然后才會(huì)執(zhí)行該命令。命令的標(biāo)準(zhǔn)輸出是字符串。每次計(jì)算命令時(shí)都會(huì)把它執(zhí)行一次。若想得到命令的結(jié)束status,請(qǐng)參考$?。

還有其他一些使用%表示法的命令輸出。

here document - 集成字符串 (多行字符串的字面值)

語(yǔ)法:

<<[-]["'`]標(biāo)識(shí)符["'`]
   ...
標(biāo)識(shí)符

普通的字符串字面值是指使用分隔符(", ', ` 等)括起來(lái)的字符串部分。集成字符串是指,把從包含“<<標(biāo)識(shí)符”的行的下一行開(kāi)始,到只包含“標(biāo)識(shí)符”的行的行首之間的內(nèi)容封裝起來(lái)之后得到的多行字符串(的字面值)。例如

print <<EOS      # (從這里開(kāi)始)直到標(biāo)識(shí)符 EOS 之前的部分就是字面值
  the string
  next line
EOS

等同于下例

print "  the string\n  next line\n"

集成字符串中的開(kāi)始標(biāo)簽“<<標(biāo)識(shí)符”具有非常重要的語(yǔ)法意義。您可以使用開(kāi)始標(biāo)簽,將集成字符串的內(nèi)容傳遞給某參數(shù),或者把集成字符串本身當(dāng)作被調(diào)(receiver)使用。

# 在表達(dá)式中加入開(kāi)始標(biāo)簽
# 把集成字符串的內(nèi)容傳遞給method的第2個(gè)參數(shù)
method(arg1, <<LABEL, arg2)
    集成字符串的具體內(nèi)容
LABEL

# 將集成字符串用作被調(diào)
p  <<LABEL.upcase
the lower case string
LABEL

# => "THE LOWER CASE STRING"

開(kāi)始標(biāo)簽的下一行通常是集成字符串的具體內(nèi)容。例如,下面的寫(xiě)法是錯(cuò)誤的。

printf('%s%d',
       <<EOS,
       3055 * 2 / 5)   # <- 該行已經(jīng)混入集成字符串的內(nèi)部
This line is a here document.
EOS

若把開(kāi)始標(biāo)簽寫(xiě)成“<<-標(biāo)識(shí)符”的話(huà),表示集成字符串的最后一行將使用縮進(jìn)格式。除此以外,您不能在最后一行中加入空白或是注釋。

if need_define_foo
  eval <<-EOS   # 使用'<<-'后 
    def foo
      print "foo\n"
    end
  EOS
  #↑最后一行使用了縮進(jìn)格式。
end

您還可以在同一行中使用多個(gè)集成字符串。

print <<FIRST, <<SECOND
   這里是第一個(gè)集成字符串的內(nèi)容。
   這里也是。
FIRST
   從該行開(kāi)始第二個(gè)集成字符串的內(nèi)容。
   第二個(gè)集成字符串將在本行后面結(jié)束。
SECOND

您可以使用引號(hào)(""、''或``)將開(kāi)始標(biāo)簽“<<標(biāo)識(shí)符”中的標(biāo)識(shí)符括起來(lái)。這時(shí),集成字符串的性質(zhì)將取決于您所選擇的引號(hào)的種類(lèi)。請(qǐng)參考下列,當(dāng)您選擇雙引號(hào)時(shí),其效果與不使用任何引號(hào)時(shí)的效果相同。

# 反斜線(xiàn)表示法和展開(kāi)式都是有效的
print <<"EOS"
The price is #{$price}.
EOS

# 效果同上
print <<EOS
The price is #{$price}.
EOS

# 展開(kāi)式無(wú)法工作
print <<'EOS'
The price is #{$price}.
EOS

# 執(zhí)行命令
print <<`EOC`
date
diff test.c.org test.c
EOC

請(qǐng)參考 字符串字面值、 展開(kāi)式、 反斜線(xiàn)表示法、 命令輸出 來(lái)了解字符串字面值的性質(zhì)

正則表達(dá)式字面值

例:

/^Ruby the OOPL/
/Ruby/i
/my name is #{myname}/o
%r|Ruby|

被/括起來(lái)的部分就是正則表達(dá)式。關(guān)于正則表達(dá)式中元字符的用法問(wèn)題,請(qǐng)參考正則表達(dá)式

尾部/后面的字符是正則表達(dá)式中使用的選項(xiàng)。具體內(nèi)容如下。

i

匹配時(shí)不區(qū)分字母大小寫(xiě)

o

開(kāi)始計(jì)算正則表達(dá)式時(shí)只處理一次展開(kāi)式

x

正則表達(dá)式中的空白(包括換行)將被忽視。同時(shí),從"#"到行尾的部分將被當(dāng)作注釋處理(請(qǐng)注意,若注釋中包含/則會(huì)引起語(yǔ)法解析錯(cuò)誤)。

/foo        # 注釋
 bar/x

等同于 /foobar/

若想包含空白,可以像\一樣使用轉(zhuǎn)義。

m

多行模式。正則表達(dá)式 "."將會(huì)匹配換行。

因?yàn)镽uby的日語(yǔ)化做得比較好,您可以設(shè)定$KCODE使其能夠正確處理日語(yǔ)字符。若$KCODE =“n”時(shí),Ruby將不會(huì)識(shí)別任何日語(yǔ)字符,而把它們當(dāng)作字節(jié)串處理,這是默認(rèn)狀態(tài)。

您還可以擺脫$KCODE的束縛,分別為每個(gè)正則表達(dá)式指定n, e, s, u中的任意一個(gè)選項(xiàng)來(lái)確定該正則表達(dá)式的字符代碼。

您還可以使用%表示法來(lái)指定其他形式的正則表達(dá)式。

在正則表達(dá)式中,反斜線(xiàn)表示法和 展開(kāi)式也是有效的。

若正則表達(dá)式字面值中不含展開(kāi)式的話(huà),則對(duì)其進(jìn)行計(jì)算時(shí)始終返回同一個(gè)正則表達(dá)式對(duì)象。若含有展開(kāi)式的話(huà),則每次(以展開(kāi)式的結(jié)果為基礎(chǔ))進(jìn)行計(jì)算時(shí)都會(huì)編譯正則表達(dá)式并生成正則表達(dá)式對(duì)象(但是,若指定了上述的o選項(xiàng)的話(huà),則返回同一個(gè)正則表達(dá)式對(duì)象)。

數(shù)組表達(dá)式

例:

[1, 2, 3]
%w(a b c)
%W(a b c)             ((<ruby 1.7 特性>))

語(yǔ)法:

`[' 表達(dá)式`,' ... `]'

分別計(jì)算每個(gè)表達(dá)式的值,然后返回由這些值構(gòu)成的數(shù)組。數(shù)組是Array類(lèi)的實(shí)例。

當(dāng)數(shù)組元素都是字符串字面值時(shí),可以使用%表示法將數(shù)組寫(xiě)成其他形式。

每次對(duì)數(shù)組表達(dá)式進(jìn)行計(jì)算時(shí)都會(huì)返回一個(gè)新的數(shù)組對(duì)象。

哈希表表達(dá)式

例:

{1=>2, 2=>4, 3=>6}

語(yǔ)法:

`{' 表達(dá)式 `=>' 表達(dá)式 `,' ... `}'
`{' 表達(dá)式 `,' 表達(dá)式 `,' ... `}'

分別計(jì)算每個(gè)表達(dá)式的值,然后返回由索引和值構(gòu)成的哈希表對(duì)象。所謂哈希表是指將任意對(duì)象當(dāng)作索引而構(gòu)成的數(shù)組,它是Hash類(lèi)的實(shí)例。

當(dāng)向某方法的參數(shù)尾部傳遞哈希表,且該哈希表中的元素超過(guò)1個(gè)時(shí),可以省略{,}。但是,在形如obj[...]的方法調(diào)用以及數(shù)組表達(dá)式中,當(dāng)所有元素都是哈希表時(shí),才可以省略{,}。

例:

method(1,2,3=>4)      # method(1,2,{3=>4})
obj[1=>2,3=>4]        # obj[{1=>2,3=>4}]
[1=>2,3=>4]           # [{1=>2, 3=>4}]

每次對(duì)哈希表表達(dá)式進(jìn)行計(jì)算時(shí)都會(huì)生成一個(gè)新的哈希表對(duì)象。

范圍對(duì)象

請(qǐng)參考范圍表達(dá)式

若范圍表達(dá)式兩端都是數(shù)值字面值時(shí),每次計(jì)算都將返回同一個(gè)對(duì)象。除此以外,每次計(jì)算時(shí)都會(huì)返回新的范圍對(duì)象。

符號(hào)

例:

(符號(hào)的例子)

      :class
      :lvar
      :method!
      :andthisis?
      :$gvar
      :@ivar
      :@@cvar
      :+

語(yǔ)法:

`:' 標(biāo)識(shí)符
`:' 變量名
`:' 操作符

Symbol類(lèi)的實(shí)例。字符串與Symbol對(duì)象是一一對(duì)應(yīng)的。

指定給Symbol字面值的操作符,必須是那些可以作為方法進(jìn)行再定義的操作符。請(qǐng)參考操作符表達(dá)式

ruby 1.7 特性: 在1.7中,也可以這樣

p :'foo-bar' #=> :"foo-bar"
p :"foo-bar" #=> :"foo-bar"
p %s{foo-bar} #=> :"foo-bar"

在這種表示法中,可以定義任意的符號(hào)(但不能包含“\0”)。

:"..." 中,反斜線(xiàn)表示法和 展開(kāi)式都是有效的。

通常符號(hào)是一種很專(zhuān)一的對(duì)象,計(jì)算時(shí)(就算包含展開(kāi)式也好,只要其結(jié)果是同一字符串的話(huà))總是返回同一對(duì)象。

%表示法

在字符串字面值、 命令輸出、 正則表達(dá)式字面值、 數(shù)組表達(dá)式、 符號(hào) 中,可以使用這種以%開(kāi)頭的表達(dá)法。特別是當(dāng)字符串或正則表達(dá)式中包含雙引號(hào)(")、斜線(xiàn)(/)等(切分字面值時(shí)使用的字符)要素時(shí),它可以減少反斜線(xiàn)(\)在代碼中出現(xiàn)的次數(shù)。另外,它還可以方便地表示字符串?dāng)?shù)組。詳細(xì)內(nèi)容如下。

  • %!STRING! : 雙引號(hào)中的字符串
  • %Q!STRING! : 同上
  • %q!STRING! : 單引號(hào)中的字符串
  • %x!STRING! : 命令輸出
  • %r!STRING! : 正則表達(dá)式
  • %w!STRING! : 字符串?dāng)?shù)組(以空白字符切分各元素)
  • %W!STRING! : 字符串?dāng)?shù)組(以空白字符切分各元素)。展開(kāi)式、反斜線(xiàn)表示法都有效(ruby 1.7 特性)
  • %s!STRING! : 符號(hào)。展開(kāi)式、反斜線(xiàn)表示法都無(wú)效(ruby 1.7 特性)

!部分可以使用任何非字母非數(shù)字的字符,包括換行。若起始切分字符是括號(hào)("(","[","{","<")的話(huà),則終止切分字符就是與其對(duì)應(yīng)的括號(hào)。若以括號(hào)作為切分字符的話(huà),只要對(duì)應(yīng)部分使用了對(duì)應(yīng)的括號(hào),就可以在其中的元素中使用與切分字符一樣的括號(hào)。

%(()) => "()"

若在數(shù)組表達(dá)式中使用%表示法的話(huà),相當(dāng)于使用空白字符將數(shù)組中以單引號(hào)括起來(lái)的字符串元素分隔開(kāi)來(lái)。例如,

%w(foo bar baz)

['foo', 'bar', 'baz']是一樣。

還可以使用反斜線(xiàn)將空白字符納入數(shù)組元素。

%w(foo\ bar baz)

=> ["foo bar", "baz"]

ruby 1.7 特性:%W與%w相同,就如同雙引號(hào)中的字符串一樣,可以使用展開(kāi)式和反斜線(xiàn)表示法。但使用空白字符進(jìn)行切分的過(guò)程要早于展開(kāi)式的計(jì)算過(guò)程。

v = "c d"
%W(a\ b #{v}e\sf #{})

=> ["a b", "c de f", ""]

Previous article: Next article: