Ruby語言 (二)


#=> method
    #質樸版:

    def plus(x,y)
      z = x + y
      return z
    end
    plus(3, 4)
       
    #一步到位的:

    def plus x,y
      x+y
    end
    plus 3,4
        
    #只有overriding沒有overloading

#=> block

    #製造一個帶有block的method:

    def hello
      yield
    end

    hello {puts "hello, block"}      

    #顯式的告訴你這是怎麼一回事(並不完全相同:

    def hello &block
      block.call
    end

    hello {puts "hello, block"}
        
#=> lambda and block

    # lambda 和 Proc:

       lambda{}

       Proc.new{}

	=begin
	
    lambda和Proc的一點點區別:

    Proc中return會跳出當前作用域

    lambda中return不會跳出當前作用域
    
	=end

#=> block example

    #一些常用的block的例子:

    [1,2,3,4,5].each{|i| puts i}

    [1,2,3,4,5].each_with_index{|i, index| puts i, index}

    [1,2,3,4,5].map{|i| i**2 }

    [1,2,3,4,5].select{|i| i%2==0 }

    [1,2,3,4,5].reject{|i| i%2==0 }

    [1,2,3,4,5].inject{|sum, i| sum += i}

#=> class

    # 正常的class實現:


    class Bird
      attr_accessor :name, :sex
      def initialize name
        @name = name
      end
      
      def self.fly
        puts "bird can fly"
      end
      
      def say
        puts "i am #{@name}"
      end
    end

    bird = Bird.new("didi")
    bird.sex = "male"
    Bird.fly


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章