Ruby程式設計語言_Chapter02_筆記

來源:互聯網
上載者:User
第二章 Ruby程式的結構和運行

  1. Ruby的注釋以#開頭,並持續到該行結束。Ruby沒有/*...*/的C風格注釋。

  2. 如果#出現在字串或者Regex的字面量裡,則它是字串或者Regex的一部分,而不是注釋。

  3. Ruby支援嵌入式注釋,以=begin開頭,以=end結尾。=begin和需要注釋的內容之間至少要有一個空格作為分界符。=end也是如此,而且=end所在行,整行都是被注釋掉的。=必須作為該行的第一個字元出現,前面連空格或定位字元都不可以有。

  4. 文檔化的注釋

  5. 字面量 就是直接出現在Ruby原始碼中的值,包括數字、字串、Regex、數組、雜湊值等。

  6. 標識符 即名字。Ruby用標識符對變數、類、方法等命名。
    1)可以有字母、數字、底線組成,但不能以數字開頭。
    2)以大寫字母開頭的標識符是常量。如果修改類似的標識符,會發出警告,但不是錯誤。
    3)類和模組名必須以大寫開頭,否則報錯。
    4)非常量多位元組標識符,以底線分割,而不是java下通常的“駝峰命名”。

  7. Ruby是大小寫敏感的。

  8. ASCII字元集下,Ruby規定了哪些字元是有效,哪些是無效的。ASCII字元集之外的所有字元都是Ruby標識符的有效字元。比如UTF-8中的乘號“×”。

  9. 標識符裡的標點符號
    1)$ 開頭的變數是全域變數;
    2)@ 開頭的變數是執行個體變數;
    3)@@ 開頭的變數是類變數;
    4)? 返回布爾值的方法的名字通常以問號結尾;
    5)! 結尾的方法名,表明此方法會改變調用它的對象本身;
    6)= 如果方法名以=結尾,則調用此方法時,可以省略此等號,這種方法通常被置於賦值操作符的左側。

  10. 保留字

    __LINE__ case ensure not then
    __ENCODING__ class false or true
    __FILE__ def for redo undef
    BEGIN defined? if rescue unless
    END do in retry until
    alias else module return when
    and elseif next self while
    begin end nil super yield
    break        
    =begin =end __END__    

  11. 如果__END__單獨出現在一行(沒有前置或後置空白),則標示程式結束,即資料區的開始。

  12. 可以通過在保留字前加上@、@@、$,從而當做執行個體變數、類變數、全域變數來使用。此外還可以將關鍵字作為方法名,但這種方法名不能單獨出現在程式中,必須通過一個對象顯示的來調用。

  13. Ruby的許多特性實際上是用Kernel、Module、Class和Object這幾個類的方法來實現的。建議將以下標識符當做保留字來處理。
    1) 這些方法通常用於聲明或者關鍵字

    at_exit catch private require
    attr include proc throw
    attr_accessor lambda protected  
    attr_reader load public  
    attr_writer loop raise  

    2) 這些方法通常用於全域方法

    Array chomp! gsub! select
    Float chop iterator? sleep
    Integer chop! load split
    String eval open sprintf
    URI exec p srand
    abort exit print sub
    autoload exit! printf sub!
    autoload! fail putc syscall
    binding fork puts system
    block_given? format rand test
    callcc getc readline trap
    caller gets readlines warn
    chomp gsub scan  

    3)這些方法通常用於對象方法

    allocate freeze kind_of? superclass
    clone frozen? method taint
    display hash methods tainted?
    dup id new to_a
    enum_for inherited nil? to_enum
    eql? inspect object_id to_s
    equal? instance_of? respond_to? untaint
    extend is_a? send  
  14. 空白符
    1)Ruby中可以使用分號來結束語句,但通常都被省略。如果省略,則分行符號被視為語句的終結。
    2)如果語句分布在多行,則應注意分行符號的位置。

    total = x + y  total = x+ y

    3)以下情形不必擔心分行符號所引起的歧義。在操作符之後;在方法調用的句點之後;在數組或雜湊表字面量裡的分隔元素的逗號之後。
    4)可以在分行符號之前加上“\”進行轉義,避免終結語句。
    5)在Ruby1.9中,如果一行代碼的第一個非空白字元是“.”,則該行被認為是上一行的延續。這種風格很符合鏈式調用。
    6)Ruby允許省略方法調用中的括弧,但應注意方法名和參數之間的空格。

    f(3+2)+1# equals to f(5) + 1f (3+2)+1# equals to f(6)

    因此不要在方法名和左括弧之間留白;如果參數是以圓括弧開頭,則整個方法調用一直要使用圓括弧;最好一直使用Ruby解譯器的-w選項。

  15. 塊(block)是一段與迭代器相關的代碼,以花括弧或者do、end來分隔。(塊的代碼多於一行的時候,使用do、end來分隔)

    3.times {print "Ruby! "}  3.times do |x|    print xend

  16. 體(Body)是一個語句列表,如類定義體,方法體迴圈體等。體從不使用花括弧分隔,而只使用關鍵字。

  17. 檔案結構
    1)如果含有“shebang”注釋,則該注釋必須出現在檔案首行;
    2)如果含有“coding”注釋,則應該出現在“shebang”下面一行;如果沒有“shebang”,則應出現在首行;
    3)如果檔案包含一行代碼,且該行代碼只包含__END__標記,且標記前後均無空白符,則Ruby解譯器將停止對該檔案的處理。檔案餘下部分可以包含任何資料,而且程式可以通過IO流對象DATA對其進行讀取。

  18. Ruby支援Unicode等其他字元集編碼;1.8中需要-Ku選項,1.9中只需在檔案開頭加上以下注釋(此注釋必須用ASCII字元編寫):

    # coding: utf-8

    1)coding後必須接一個冒號或等號,然後再接字元編碼名稱,該名稱不能包含空格,也不能包含底線和連字號以外的標點符號;
    2)冒號和等號兩邊可以存在空格,字串coding前面還可以包含任意首碼;
    3)整個注釋不區分大小寫。

  19. 如果使用UTF-8,在Windows下最好儲存的時候,選擇無BOM方式。

  20. 在Windows的命令列中,要正確顯示UTF-8輸出,應該執行命令“chcp 65001”,並將字型改為“Lucida Console”。

  21. JRuby 1.6.x預設情況下是和Ruby1.8相容的,如果想要和1.9相容,需要設定系統變數“JRUBY_OPTS=--1.9”。

  22. 通常情況下(除非調用了exit!方法),Ruby會在退出之前執行所有的END語句,以及任何用at_exit函數註冊過的“關閉鉤子”代碼。

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.