多思考,多实践,现状才会改变!

ruby 参数传递的几种形式 学习笔记

上一篇 / 下一篇  2011-07-06 11:41:55 / 个人分类:ruby 语法

Ruby参数传递方法小结

n 一般传递方式

 deffoo(a, b)

    puts a, b

end

foo(1,2)

#1

#2

n 可变数量参数传递

 deffoo(*args)
    puts args.inspect
end
foo(1,2,3,4,5,6)
#[1, 2, 3, 4, 5, 6]

 

n 混合两种方式(一)

 deffoo(a, b, *args)
    puts a, b, args.inspect
end
foo(1,2,3,4)
#1
#2
#[3, 4]

 

n 混合两种方式(二)

 deffoo(a, b, *args)
    puts a, b, args.inspect
end
foo(1,2,3)
#1
#2
#[3]

n Hash参数(一)

 def foo(values)
    puts values.inspect
end
foo(:a => 1, :b => 2)
#{:b=>2, :a=>1}

 

n Hash参数(二)

 deffoo(a, b, values)
    puts a, b, values.inspect
end
foo(1,2, :a=>1,:b=>2)
#1
#2
#{:b=>2, :a=>1}

应用举例
def foo (a,b,*args)
	
	if args.include?("aa")
		puts a

	end
	
	if args.include?("bb")
		puts b
	end

	if args.include?("cc")
		puts a+b
	end

end
foo(1,2,"aa")
puts "------------"

foo(1,2,"aa","bb")
puts "------------"

foo(1,2,"aa","bb","cc")
#以下为输出结果:
D:\>ruby tests.rb
1
------------
1
2
------------

########################
# hash 参数传递,如果一个方法的有多于两三个参数时,程序员很难记清楚参数的顺序,这时我们就可以使用哈希对像作为参数,例如
def args_test(a,args)
    if args.include?("aa")
        puts args["aa"]
        puts a
    end
    if args.include?("bb")
        puts args["bb"]
    end 
end

args_test('2',{"aa"=>3,"bb"=>5})

#=>3 2 5

#知识补充:查询hash表中是否存在某个键或值的方法
# h.key?(key)  返回true 或 false
# h.has_key?(key)   返回true 或 false
# h.include?(key)   返回true 或 false
#举例:
#h = {"a" => "b", "c" => "d"}
#p h.key?("a")
#返回结果=> true
1
2
3

TAG: hash表 Ruby ruby 参数 传递

 

评分:0

我来说两句

Open Toolbar