Ruby方法
1、参数可以有默认值,对java的多态而言可以省去很多代码
def method(arg1='hello',arg2='world')
end
2、可以一次性传递任意多个参数,以*开头,只能放在方法定义的最后一个参数位置
def method(arg1='hello',*arg2)
end
arg2是一个Array的参数数组
3、块和Proc对象的关联。当方法接受参数中最后一个参数以&开头的时候,任何以之关联的块都会转换为Proc对象,并且这个Proc对象将会赋值给这个参数
class TaxCalculator
def initialize(name, &block)
@name, @block = name, block
end
def get_tax(amount)
"#@name on #{amount} = #{ @block.call(amount) }"
end
end
tc = TaxCalculator.new("Sales tax") {|amt| amt * 0.075 }
tc.get_tax(100) => "Sales tax on 100 = 7.5"
tc.get_tax(250) => "Sales tax on 250 = 18.75"
1、参数可以有默认值,对java的多态而言可以省去很多代码
def method(arg1='hello',arg2='world')
end
2、可以一次性传递任意多个参数,以*开头,只能放在方法定义的最后一个参数位置
def method(arg1='hello',*arg2)
end
arg2是一个Array的参数数组
3、块和Proc对象的关联。当方法接受参数中最后一个参数以&开头的时候,任何以之关联的块都会转换为Proc对象,并且这个Proc对象将会赋值给这个参数
class TaxCalculator
def initialize(name, &block)
@name, @block = name, block
end
def get_tax(amount)
"#@name on #{amount} = #{ @block.call(amount) }"
end
end
tc = TaxCalculator.new("Sales tax") {|amt| amt * 0.075 }
tc.get_tax(100) => "Sales tax on 100 = 7.5"
tc.get_tax(250) => "Sales tax on 250 = 18.75"