Tag: keyword argument

使用可选的第一个哈希参数和keyword_args的奇数方法行为

我有以下方法: def test(first_param = nil, keyword_arg: nil) puts “first_param: #{first_param}” puts “keyword_arg: #{keyword_arg}” end 以下所有调用都按我的预期执行: test(:something) #=> first_param: something # keyword_arg: test(nil, keyword_arg: :keyword_arg) #=> first_param: # keyword_arg: keyword_arg test({ first_param: :is_a_hash }, keyword_arg: :is_still_working) #=> first_param: {:first_param=>:is_a_hash} # keyword_arg: is_still_working 但是省略可选的keyword_arg并将散列作为第一个参数传递给我一个错误: test(first_param: :is_a_hash) #=> test.rb:1:in `test’: unknown keyword: first_param (ArgumentError) # from test.rb:12:in `’ […]

何时使用关键字参数也称为Ruby中的命名参数

Ruby 2.0.0支持关键字参数(KA),我想知道在纯Ruby的上下文中这个特性的好处/用例是什么,特别是考虑到由于需要每个关键字匹配而导致的性能损失。时间调用带有关键字参数的方法。 require ‘benchmark’ def foo(a:1,b:2,c:3) [a,b,c] end def bar(a,b,c) [a,b,c] end number = 1000000 Benchmark.bm(4) do |bm| bm.report(“foo”) { number.times { foo(a:7,b:8,c:9) } } bm.report(“bar”) { number.times { bar(7,8,9) } } end # user system total real # foo 2.797000 0.032000 2.829000 ( 2.906362) # bar 0.234000 0.000000 0.234000 ( 0.250010)