gr8vyguy@Blogjava

          Ruby學習筆記1,第一章和第二章

          第一章

          交互式實驗環境啟動命令 irb

          文件加載的命令 load "filename.rb"

          運行一個文件 ruby filename.rb, ruby -w 激活warning

          查看幫助文檔命令 ri class.method

          第二章

          注釋符號 #

          Bool值 
             false和nil為假,其他都為真

          實例化
            object = Clazz.new(arguments),new是繼承自Object的一個static方法

          方法調用
            "str".length        =>   3                  不一定要括號()
            "str".index("r")   =>   2                  index從零開始計數
            -1942.abs        =>   1942            整數也是對象,Ruby沒有的primitive數據,都是對象

          函數定義
            def add(x, y)
               return x + y
            end
          函數的最后一個表達式即是返回值,所以return x + y也可以寫成x + y.

          變量名
            全局               $global
            實例(field)      @field
            類(static)         @@class_field
            局部               小寫字符和下劃線開頭

          字符串
            "Good night, #{name}"    <=>  "Good night, %s", name
            'Good night, #$name'     如果name是全局變量
            "Good night, #@name"    如果name是實例變量

          正則表達式
            Pattern以/ /頭尾, match操作符 =~
            \s       單個空格字符
            \d       單個數字
            \w      單詞中的字符
            .         單個字符
           (|)       兩則取一
           "Java python c#" =~ /python/ 返回5
           "Java python c#".sub(/c#/, 'ruby') 返回Java python ruby
           "c# Java c#".gsub(/c#/, 'Java') 返回 Java Java Java

          列表
            a = [1, "cat", 3.14]
            a[0] = nil
            a = %w{ ant bee cat } <=> a = [ "ant", "bee", "cat" ]

          Hash
            numbers = { "one" => 1, "two" => 2, "three" => 3}
          默認的不存在鍵返回值是nil,可以改變
            hist = Hash.new(0)
            hist["key1"] => 0
            hist["key1"] = hist["key1"] + 1
            hist["key1"] => 1

          輸出
            puts        自動加上換行符
            print       沒有換行符
            printf("Number: %5.2f,\nString: %s\n", 1.23, "hello")

          輸入
            gets        輸入一行,帶換行符

          控制結構
            if <condition>                           while <condition>
                <statements>                            <statements>            
            elsif <condition>                       end
                <statements>
            else
                <statements>
            end

            puts "Danger, Will Robinson" if radiation > 3000
          <=>
            if radiation > 3000
                puts "Danger, Will Robinson"
            end

            square = 2
            square = square * square while square < 1000     # 照樣是先判斷條件,為true,運行循環

          Block是一段匿名的代碼或者說是一個匿名的函數,可以用yield調用
            def call_block
              yield("hello", 99)  # 調用block
            end
            call_block { |str, num| puts str + num } # 定義block

          需要Block的函數,類似于函數式語言中的High Order函數,他的一個參數是函數。
            animals = %w{ ant bee cat }
            animals.each { |animal| print animal, " " }
            5.times { print '+' }
            3.upto(6) { |i| print i }
            ('a'..'e').each { |c| print c }

          并行賦值
            x, y = y, x   # 交換了x和y的值

          例子: 計算Fibonacci數

          def fib_up_to(max)
            i1, i2 
          = 11
            
          while i1 <= max
              
          yield i1
              i1, i2 
          = i2, i1 + i2    
            end
          end

          fib_up_to(
          1000) { |f| print f, " " }

          判斷一變量名是否定義
            defined?(name)

          轉載請保留http://www.aygfsteel.com/xilaile/archive/2007/05/06/115497.html

          posted on 2007-05-05 21:54 gr8vyguy 閱讀(438) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          公告

        1. 轉載請注明出處.
        2. msn: gr8vyguy at live.com
        3. 常用鏈接

          留言簿(9)

          隨筆分類(68)

          隨筆檔案(80)

          文章分類(1)

          My Open Source Projects

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 岳阳县| 浙江省| 大余县| 江油市| 河间市| 勃利县| 金溪县| 响水县| 吉林省| 固原市| 福海县| 白水县| 高密市| 韩城市| 南康市| 南岸区| 虎林市| 伊宁县| 海伦市| 资中县| 同江市| 射洪县| 民和| 临湘市| 中卫市| 正定县| 宁化县| 佛山市| 三原县| 谢通门县| 寻甸| 台东县| 阿克| 邢台市| 涿鹿县| 南木林县| 中卫市| 兴文县| 辰溪县| 安泽县| 合阳县|