First I should say rubymonk is a great web site for ruby learners.
I just have some time this afternoon so I dived my self into this language and found it quite amazing!
Look at this code snippet below. Besides a variable parameter list, it's also possible to add naming parameters to your method arguments.
I just have some time this afternoon so I dived my self into this language and found it quite amazing!
Look at this code snippet below. Besides a variable parameter list, it's also possible to add naming parameters to your method arguments.
def add(*numbers)
numbers.inject(0) { |sum, number| sum + number }
end
def subtract(*numbers)
sum = numbers.shift
numbers.inject(sum) { |sum, number| sum - number }
end
def calculate(*arguments)
# if the last argument is a Hash, extract it
# otherwise create an empty Hash
options = arguments[-1].is_a?(Hash) ? arguments.pop : {}
options[:add] = true if options.empty?
return add(*arguments) if options[:add]
return subtract(*arguments) if options[:subtract]
end
invoking add(4, 5) returns 9 ✔
invoking add(-10, 2, 3) returns -5 ✔
invoking add(0, 0, 0, 0) returns 0 ✔
invoking subtract(4, 5) returns -1 ✔
invoking subtract(-10, 2, 3) returns -15 ✔
invoking subtract(0, 0, 0, 0, -10) returns 10 ✔
defaults to addtion when no option is specified ✔
invoking calculate(4, 5, add: true) returns 9 ✔
invoking calculate(-10, 2, 3, add: true) returns -5 ✔
invoking calculate(0, 0, 0, 0, add: true) returns 0 ✔
invoking calculate(4, 5, subtract: true) returns -1 ✔
invoking calculate(-10, 2, 3, subtract: true) returns -15 ✔
invoking calculate(0, 0, 0, 0, -10, subtract: true) returns 10 ✔
本文介绍了一种在Ruby中处理变量参数列表及命名参数的方法。通过定义add和subtract方法实现数值加减运算,并进一步扩展到calculate方法,该方法可根据传入的选项参数决定执行加法或减法操作。
821

被折叠的 条评论
为什么被折叠?



