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

目錄 搜索
Ruby用戶指南 3、開始 4、簡單的例子 5、字符串 6、正則表達(dá)式 7、數(shù)組 8、回到那些簡單的例子 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、開始:最簡單的腳本 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ù)庫 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)庫 OO設(shè)計(jì) 網(wǎng)絡(luò)和Web庫 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)部類/模塊/異常類 附加庫 Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術(shù)語集 Ruby的運(yùn)行平臺(tái) pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
文字

操作符表達(dá)式

  • 賦值
    • 計(jì)算賦值
    • 多重賦值
  • 范圍表達(dá)式
  • and
  • or
  • not
  • 條件操作符

例:

1+2*3/4

為了便于編程,有些方法調(diào)用和控制結(jié)構(gòu)是以操作符的形式出現(xiàn)的。Ruby語言中有下列操作符。

高     ::
       []
       +(單項(xiàng))  !  ~
       **
       -(單項(xiàng))
       *  /  %
       +  -
       << >>
       &
       |  ^
       > >=  < <=
       <=> ==  === !=  =~  !~
       &&
       ||
       ..  ...
       ?:(條件操作符)
       =(+=, -= ... )
       not
低     and or

左側(cè)的“高”和“低”表示操作符的優(yōu)先度。例如“&&”的優(yōu)先度要高于“||”,所以

a && b || c   #=> (a && b) || c
a || b && c   #=>  a || (b && c)

大部分操作符都是些特殊形式的方法調(diào)用,但有的操作符被嵌入語言之中,無法進(jìn)行再定義。

  • 可再定義的操作符(方法):

    +@, -@表示單項(xiàng)操作符+, -,在方法定義等場(chǎng)合中可以使用這種表示法。

    |  ^  &  <=>  ==  ===  =~  >   >=  <   <=   <<  >>
    +  -  *  /    %   **   ~   +@  -@  []  []=  `
    
  • 不可再定義的操作符(控制結(jié)構(gòu)):

    由多個(gè)操作符組合而成的計(jì)算賦值操作符、“!=”以及“!~”是不能再定義的。

    =  ?:  ..  ...  !  not  &&  and  ||  or  ::
    

賦值

例:

foo = bar
foo[0] = bar
foo.bar = baz

語法:

變量 '=' 表達(dá)式
常數(shù) '=' 表達(dá)式
表達(dá)式`['expr..`]' '=' 表達(dá)式
表達(dá)式`.'標(biāo)識(shí)符 '=' 表達(dá)式

我們使用賦值表達(dá)式向變量等對(duì)象進(jìn)行賦值。賦值也可以用作局部變量和常數(shù)的聲明。賦值表達(dá)式的左邊必須是下列之一。

  • 變量

    變量 `=' 表達(dá)式
    

    若左邊是變量的話,就將表達(dá)式的計(jì)算值代入其中。

  • 數(shù)組調(diào)用

    表達(dá)式1`[' 表達(dá)式2 ... `]' `=' 表達(dá)式n
    

    先計(jì)算表達(dá)式1得到一個(gè)對(duì)象,再把從表達(dá)式2到表達(dá)式n之間的這些表達(dá)式作為參數(shù),來調(diào)用該對(duì)象的"[]="方法。

    例:

    class C
      def initialize
        @ary = [0,1,2,3,4,5,6,7]
      end
      def [](i)
        @ary[i * 2]
      end
      def []=( i, v )
        @ary[i * 2] = v
      end
    end
    c = C.new
    p c[3]      # 變成 c.[]( 3 ), 結(jié)果為6
    p c[3] = 1  # 變成 c.[]=(3,1),結(jié)果為1
    
  • 屬性調(diào)用

    表達(dá)式1 `.' 標(biāo)識(shí)符 `=' 表達(dá)式2
    

    計(jì)算表達(dá)式1得到一個(gè)對(duì)象,再以表達(dá)式2為參數(shù)來調(diào)用該對(duì)象的"標(biāo)識(shí)符="方法。

    例:

    class C
      def foo
        @foo
      end
      def foo=( v )
        @foo = v
      end
    end
    c = C.new
    c.foo = 5   # 變成 c.foo=( 5 )
    p c.foo     # => 5
    

    還可以使用 attr 來定義屬性。

    例:

    class C
      attr :foo, true
    end
    c = C.new
    c.foo = 5   # 變成 c.foo=( 5 )
    p c.foo     # => 5
    

計(jì)算賦值

例:

foo += 12       # foo = foo + 12
a ||= 1         # 若a為偽或者a尚未定義,就把1賦值給a。初始化時(shí)的一種習(xí)慣寫法。

語法:

表達(dá)式1 op= 表達(dá)式2     # 表達(dá)式1等同于普通賦值表達(dá)式左邊的部分

op就是下列中的某一個(gè)。操作符與=之間不留間隔。

+, -, *, /, %, **, &, |, ^, <<, >>, &&, ||

這種賦值形式等同于

表達(dá)式1 = 表達(dá)式1 op 表達(dá)式2

但是,當(dāng)op是“&&”或“||”時(shí)就會(huì)變成

表達(dá)式1 op (表達(dá)式1 = 表達(dá)式2)

這個(gè)樣子。例如在屬性調(diào)用時(shí)

obj.foo ||= true

就不能解釋成

obj.foo = obj.foo || true

而應(yīng)該是

obj.foo || (obj.foo = true)

這樣才對(duì)。(根據(jù)obj.foo結(jié)果的不同,有時(shí)就不能調(diào)用obj.foo=)

多重賦值

例:

foo, bar, baz = 1, 2, 3
foo, = list()
foo, *rest = list2()

語法:

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

多重賦值是指,在多個(gè)表達(dá)式以及數(shù)組中同時(shí)進(jìn)行的賦值。左邊的各個(gè)表達(dá)式必須是可以被賦值的。若右邊只有一個(gè)表達(dá)式時(shí),則將該表達(dá)式的計(jì)算值轉(zhuǎn)為數(shù)組后,再把數(shù)組中的各個(gè)元素依次賦值給左邊。若右邊數(shù)組元素的數(shù)量超過左邊的話,將忽略多余的數(shù)組元素。若右邊數(shù)組元素個(gè)數(shù)不足的話,將向左邊多余的元素中代入nil。

若左邊最后一個(gè)表達(dá)式前帶*的話,則將右邊多余的元素以數(shù)組的形式代入這個(gè)帶*的表達(dá)式中。若右邊沒有多余元素的話,就把空數(shù)組代入其中。

例:

foo, bar = [1, 2]       # foo = 1; bar = 2
foo, bar = 1, 2         # foo = 1; bar = 2
foo, bar = 1            # foo = 1; bar = nil

foo, bar, baz = 1, 2    # foo = 1; bar = 2; baz = nil
foo, bar = 1, 2, 3      # foo = 1; bar = 2
foo      = 1, 2, 3      # foo = [1, 2, 3]
*foo     = 1, 2, 3      # foo = [1, 2, 3]
foo,*bar = 1, 2, 3      # foo = 1; bar = [2, 3]

在多重賦值過程中,若使用括號(hào)的話,就可以把數(shù)組內(nèi)含的元素取出來進(jìn)行賦值。

(foo, bar), baz = [1, 2], 3       # foo = 1; bar = 2; baz = 3

還可以把特殊形式的賦值表達(dá)式轉(zhuǎn)化為多重代入。

class C
  def foo=( v )
    @foo = v
  end
  def []=(i,v)
    @bar = ["a", "b", "c"]
    @bar[i] = v
  end
end

obj = C.new
obj.foo, obj[2] = 1, 2     # @foo = 1; @bar = ["a", "b", 2]

若左邊以","結(jié)尾或"*"后面沒有表達(dá)式時(shí),將忽略右邊多余的元素。

例:

foo,*    = 1, 2, 3      # foo = 1
foo,     = 1, 2, 3      # foo = 1
*        = 1, 2, 3

當(dāng)您想忽略方法調(diào)用中的所有參數(shù)時(shí),就可以使用這個(gè)"*"(方法調(diào)用中的參數(shù)在進(jìn)行交接時(shí),大體遵循多重代入的規(guī)則)。

例:

def foo(*)
end
foo(1,2,3)

多重賦值的值變換為右邊的數(shù)組。

范圍表達(dá)式

例:

1 .. 20
/first/  ...  /second/

語法:

表達(dá)式1 `..' 表達(dá)式2
表達(dá)式1 ` ... ' 表達(dá)式2

如果不是出現(xiàn)在條件表達(dá)式中的話,它將返回從表達(dá)式1到表達(dá)式2的范圍對(duì)象。范圍對(duì)象是 Range 類的實(shí)例。使用"..."生成的范圍對(duì)象將不包括終點(diǎn)。

若它出現(xiàn)在條件表達(dá)式中時(shí),在表達(dá)式1變成真之前,它將一直返回偽。接下來,在表達(dá)式2返回真之前,它將一直返回真。一旦表達(dá)式2變?yōu)檎?,它將重新返回偽。使?.."時(shí),一旦表達(dá)式1返回真,馬上就會(huì)對(duì)表達(dá)式2進(jìn)行計(jì)算(就象awk)。而使用"..."時(shí),在進(jìn)行下個(gè)計(jì)算之前,一直都不會(huì)對(duì)表達(dá)式2進(jìn)行計(jì)算(就象sed)。

and

例:

test && set
test and set

語法:

表達(dá)式 `&&' 表達(dá)式
表達(dá)式 `and' 表達(dá)式

首先計(jì)算左邊,若結(jié)果為真就接著計(jì)算右邊。"and"操作符的作用相同但優(yōu)先度更低。

將包含and的表達(dá)式傳遞給某方法的參數(shù)時(shí),必須使用雙層括號(hào)。

p(true && false)    #=> false
p((true and false)) #=> false

or

例:

demo || die
demo or die

語法:

表達(dá)式 `||' 表達(dá)式
表達(dá)式 or 表達(dá)式

首先計(jì)算左邊,若結(jié)果為偽就接著計(jì)算右邊。"or"操作符的作用相同但優(yōu)先度更低。

將包含or的表達(dá)式傳遞給某方法的參數(shù)時(shí),必須使用雙層括號(hào)。

p(false || true)    #=> true
p((false or true)) #=> true

not

例:

! me
not me
i != you

語法:

`!' 表達(dá)式
not 表達(dá)式

若表達(dá)式值為真就返回偽,若表達(dá)式值為偽則返回真。

表達(dá)式 `!=' 表達(dá)式

等同于!(表達(dá)式 == 表達(dá)式)。

表達(dá)式 `!~' 表達(dá)式

等同于!(表達(dá)式 =~ 表達(dá)式)

將包含not的表達(dá)式傳遞給某方法的參數(shù)時(shí),必須使用雙層括號(hào)。

p(! false)      #=> true
p((not false))  #=> true

條件操作符

例:

obj == 1 ? foo : bar

語法:

表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3

根據(jù)表達(dá)式1的結(jié)果,選擇返回表達(dá)式2或表達(dá)式3。它與

if 表達(dá)式1 then 表達(dá)式2 else 表達(dá)式3 end

完全相同。


上一篇: 下一篇: