#=> 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
Ruby語言 (二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.