<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ruby學習筆記(3)

    本節課主要4部分內容如下:Method Missing、More on Strings、Simple Constructs、Ruby Arrays

    3.1 Method Missing

          在ruby中,如果執行某對象的方法找不到時,則會報NoMethodError
          但如果定義了方法method_missing,則錯誤會被該方法攔截
        class Dummy 
            def method_missing(m, 
    *args)  #可變參數的定義
                 puts 
    "There's no method called #{m} here -- please try again." 
            end 
        end 
        Dummy.
    new.anything

        輸出結果:There
    's no method called anything here -- please try again

    3.2 More on Strings

            ruby中的string是mutable的,這與java有明顯的不同
            1) 常用的不會修改string原始字符串的函數:upcase,downcase,swapcase......
            2) 常用的會修改string原始字符串的函數:upcase!,downcase!,swapcase! capitalize!......
                注意: 嘆號!在這里的作用,很不可思議吧?   
            3) 之前我們提到,string可由單引號或雙引號定義,而單引號的效率會更高,
                主要原因在于雙引號處理的過程更復雜,過程如下:
                a. 查找替換符\,如果找到執行替換操作
                b. 查找符號#,如果找到,計算表達式#{expression} #學習筆記2中有這個例子
                注意:對單引號定義的string,則只會處理步驟a
            4)String的幾個特殊方法
                String.methods.sort  #列出string class的所有方法,sort用來排序
                String.instance_methods.sort #列出string instance 的所有方法
                String.instance_methods(false).sort #列出string中不包括從父類繼承的instance所有方法
            5)String的比較
                (1) ==            #tests two strings for identical content  
                (2) String.eql?   #tests two strings for identical content
                (3) String.equal? #tests whether two strings are the same object
              注意:(1),(2)是比較內容,結果一樣
                    (3)比較的是引用(是否同一對象)
                    puts 'test' == 'test'    #結果為true
                    puts 
    'test'.eql? 'test'  #結果為true
                    puts 
    'test'.equal?'test' #結果為false 
            6)%w的使用
                通常定義String的數組時,使用單引號和逗號,
                names1 = [ 'ann', 'richard', 'william', 'susan', 'pat' ]
                # puts names1[0] # ann 
                # puts names1[3] # susan
                但如果使用%w,可以大大簡化操作
                # names2 = %w{  ann richard william susan pat } 
                # puts names2[0] # ann 
                # puts names2[3] # susan

    3.3 Simple Constructs      
            1) ruby中,nil和false 被認為是 false 的,其他任何(true,0,....)都是true
            2) ruby的簡單結構主要包括
                if
                end
               
                if
                else
                end
               
                if
                elsif
                end
               
                unless
                end
               
                while
                end

    3.4 Ruby Arrays
            1) 數組索引從0開始
            2) 數組可以動態增加
                array = ['Hello', 'Goodbye']
                array[2] = 'world'
                array[3] = '....'
            3)可以使用each獲取數組元素
                languages = ['Pune', 'Mumbai', 'Bangalore']
                languages.each do |lang|
                    puts 'I love ' + lang + '!'
                 end

    3.5 總結
        * method_missing gives you a way to intercept unanswerable messages and handle them gracefully.
        
    * Refer to the String documentation to use the various methods available.
        
    * For double-quoted string literals, Ruby looks for substitutions - sequences that start with a backslash character - and replaces them with some binary value or does expression interpolation ie. within the string, the sequence #{expression} is replaced by the value of the expression.
        
    * It is to be noted that every time a string literal is used in an assignment or as a parameter, a new String object is created.
        
    * %w is a common usage in strings.
        
    * Observe how one can list all the methods of a class or object.
        
    * Comparing two strings for equality can be done by == or .eql? (for identical content) and .equal? (for identical objects).
        
    * Observe the usage of constructs: if else end, whileif elsif end
        
    * Case Expressions: This form is fairly close to a series of if statements: it lets you list a series of conditions and execute a statement corresponding to the first one that's true. case returns the value of the last expression executed. Usage: case when else end
        * Ruby also has a negated form of the if statement, the unless end.
        
    * An Array is just a list of items in order. Every slot in the list acts like a variable: you can see what object a particular slot points to, and you can make it point to a different object. You can make an array by using square brackets.
        
    * Arrays are indexed by integers and the index starts from 0.
        
    * A trailing comma in an array declaration is ignored.
        
    * You can access an array beyond its boundary limits; it will return nil.
        
    * We can add more elements to an existing array.
        
    * Refer the Array documentation for a list of methods.
        
    * The method each (for any object) is an iterator that extracts each element of the array. The method each allows us to do something (whatever we want) to each object the array points to.
        
    * The variable inside the "goalposts" ie. | | refers to each item in the array as it goes through the loop. You can give this any name you want.
        
    * The do and end identify a block of code that will be executed for each item.


    3.6 作業
        1. Write a Ruby program that asks for a year and then displays to the user whether the year entered by 
          him/her is a leap year or not.

        2. Write a method leap_year. Accept a year value from the user,
          check whether it's a leap year and then display the number of minutes in that year.
        3. Write a Ruby program that,
          when given an array as collection = [1, 2, 3, 4, 5] it calculates the sum of its elements.
        4. Write a Ruby program that, when given an array as collection = [12, 23, 456, 123, 4579]
          it displays for each number, whether it is odd or even.

        5.Write a program that processes a string "Welcome to the forum.\nHere you can learn Ruby.\nAlong with other members.\n" a line at a time, using all that we have learned so far. The expected output is:
          # Line 1: Welcome to the forum.
          # Line 2: Here you can learn Ruby.
          # Line 3: Along with other members.

    1.Write a Ruby program that asks for a year and then displays to the user
    #  whether the year entered by him
    /her is a leap year or not.
    def is_leap_year(year)
      
    if (year.to_i % 4==0 && year.to_i % 100!=0|| (year.to_i % 400==0)
        
    return true
      end
    end


    puts 
    'Please input a year number:'
    STDOUT.flush
    year 
    = gets.chomp
    if is_leap_year(year )
          puts 
    "#{year} is a leap year"
      
    else   
          puts 
    "#{year} is not a leap year"
    end
    #
    -----------------------------------------------------

    #
    2 Write a method leap_year. Accept a year value from the user, 
    # check whether it
    's a leap year and 
    # then display the number of minutes in that year.

    def is_leap_year(year)
      
    if (year.to_i % 4==0 && year.to_i % 100!=0|| (year.to_i % 400==0)
        
    return true
      end
    end

    puts 
    'Please input a year number:'
    STDOUT.flush
    year 
    = gets.chomp
    if is_leap_year(year)
          puts 
    "#{year} is a leap year"
          puts 
    "#{year} has #{366 * 24 *60} minutes"
      
    else   
          puts 
    "#{year} is not a leap year"
          puts 
    "#{year} has #{365 * 24 *60} minutes"
    end
    #
    ----------------------------------------------


    #
    3 Write a Ruby program that, 
    # when given an array as collection 
    = [12345] it calculates the sum of its elements.
    def calculate_sum(array)
      sum 
    = 0
      array.each 
    do |num|  
        sum 
    = sum + num
      end
      
    return sum
    end
    puts calculate_sum([
    1,2,3,4,5])
    #
    ----------------------------------------------


    #
    4 Write a Ruby program that, when given an array as collection = [12234561234579]
    # it displays 
    for each number, whether it is odd or even.
    def display_num_stauts(array)
      array.each 
    do |num|
        
    if num % 2 ==0
          puts num.to_s 
    + ' is even number'
        
    else   
          puts num.to_s 
    + ' is odd number'
        end
      end
    end
    display_num_stauts([
    12234561234579])
    #
    ----------------------------------------------

    #
    5 Write a program that processes a string s = 
    "Welcome to the forum.\nHere you can learn Ruby.\nAlong with other members.\n" 
    # a line at a time, using all that we have learned so far. The expected output is:
    # Line 
    1: Welcome to the forum.
    # Line 
    2: Here you can learn Ruby.
    # Line 
    3: Along with other members.
    = "Welcome to the forum.\nHere you can learn Ruby.\nAlong with other members.\n"
    = s.split("\n").to_a
    a.each 
    do |str|
      #  puts 
    "Line " + a.index(str).to_s + str
      #{a.index(str)} 
    " 
      puts "Line #{a.index(str)} " + str 
    end
    ---------------------------------------------------------------------------------------------------------
    本節課主要4部分內容的原文鏈接:

    posted on 2007-10-15 18:06 想飛就飛 閱讀(1966) 評論(2)  編輯  收藏 所屬分類: ROR

    評論

    # re: ruby學習筆記(3) 2007-10-15 20:04 vagrant

    謝謝,我跟著學了三次了...  回復  更多評論   

    # re: ruby學習筆記(3) 2009-04-07 13:53 coolfish

    沒學過編程,不懂  回復  更多評論   

    公告


    導航

    <2007年10月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    統計

    常用鏈接

    留言簿(13)

    我參與的團隊

    隨筆分類(69)

    隨筆檔案(68)

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产一级高清视频免费看| 6080午夜一级毛片免费看6080夜福利| 青草草在线视频永久免费| 亚洲精彩视频在线观看| 久久不见久久见免费视频7| 久久久久亚洲AV成人片| 国产精品免费无遮挡无码永久视频 | 亚洲精品免费在线| 国产男女爽爽爽爽爽免费视频| 亚洲视频在线观看不卡| 57PAO成人国产永久免费视频 | 性xxxxx免费视频播放| 国产日本亚洲一区二区三区| 国产美女在线精品免费观看| 亚洲国产日韩a在线播放| 凹凸精品视频分类国产品免费| 一级A毛片免费观看久久精品 | 亚洲一级特黄特黄的大片| 日韩精品免费一区二区三区| 精品国产亚洲第一区二区三区 | 国产亚洲精品不卡在线| 最新国产乱人伦偷精品免费网站| 亚洲成a人片在线观看日本| 亚洲人成免费电影| 处破女第一次亚洲18分钟| 亚洲一区日韩高清中文字幕亚洲| 一个人看的www免费视频在线观看| 亚洲一区免费观看| 国产午夜无码视频免费网站| 久久一区二区免费播放| 亚洲综合在线成人一区| 国产99视频免费精品是看6| 叮咚影视在线观看免费完整版| 亚洲国产日韩在线| 亚洲欧洲中文日韩av乱码| 99re这里有免费视频精品| 亚洲aⅴ无码专区在线观看春色 | 全免费a级毛片免费看不卡| 国产日韩精品无码区免费专区国产| 91在线亚洲精品专区| 免费国产a国产片高清|