6. Ruby method

Posted by 竹林品雨 on June 22, 2014

###6. Ruby method

####6.1 Being Methodical

调用对象的方法

puts 1.next #2

对象的method方法 参数为方法名的字符串形式返回一个对象

puts 1.method("next") # #<Method: Fixnum(Integer)#next>
ne = 1.method("next")
ne.call         # 2 与 1.next 效果一样

ruby中的i++ (i为整数)

i.next

####6.2 调用方法 Calling a method

方法参数设置默认值

def hi(name="mlx")
    p "Hello, #{name}"      #Hello, mlx 
end

数组化方法参数

def add(*numbers)
    numbers.inject(0) {|sum,num| sum+num}
end

add(1,2,3,4)  #10

*numbers 将多个参数视作一个参数 亦可将数组视作多个参数 如下例:

def add(a,b)
    a+b
end

arr = [1,2]

add(*arr)  #3
add(arr)  #ArgumentError 参数个数不够

*arr 将数组展开 
p *arr  #换行输出结果 (不妨irb实践一下)
#1
#2
def add(*numbers)
  numbers.inject(0) { |sum, number| sum + number }
end

def add_with_message(message, *numbers)
  "#{message} : #{add(*numbers)}"
end

puts add_with_message("The Sum is", 1, 2, 3)  #The Sum is : 6