Skip to content

Instantly share code, notes, and snippets.

@subbuss
Created July 8, 2013 01:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subbuss/5945677 to your computer and use it in GitHub Desktop.
Save subbuss/5945677 to your computer and use it in GitHub Desktop.
[ruby-head] [subbu@earth ~/jruby] cat ir.docs/kwargs.rb
def bar(a, defarg=9, *restargs, b, c: 'default', d: 'kwarg', **kwargs)
["a=#{a}", "defarg=#{defarg}", "restargs=#{restargs}", "b=#{b}", "c=#{c}", "d=#{d}", "kwargs=#{kwargs}"]
end
puts bar(1, 2).join('; ')
begin
puts bar(1, {:x => 32, :y => 'foo'} ).join('; ')
rescue Exception => e
puts "ERROR: #{e}"
end
puts bar(1, 2, {} ).join('; ')
puts bar(1, 2, {:c => nil, :d => 5} ).join('; ')
puts bar(1, 2, {:x => 32, :y => 'foo'} ).join('; ')
puts bar(1, {:x => 32, :y => 'foo'}, 3, 4).join('; ')
puts bar(1, 2, 3, 4, 5).join('; ')
puts bar(1, 2, 3, 4, 5, c:6, d:7).join('; ')
puts bar(1, 2, 3, 4, 5, c:6, d:7, x:1, y:2, z:3).join('; ')
puts "--------------"
def foo(a, defarg=9, *restargs, c: 'default', d: 'kwarg', **kwargs)
["a=#{a}", "defarg=#{defarg}", "restargs=#{restargs}", "c=#{c}", "d=#{d}", "kwargs=#{kwargs}"]
end
puts foo(1).join('; ')
puts foo(1, 2, 3, 4, 5).join('; ')
puts foo(1, 2, 3, 4, 5, c:6, d:7).join('; ')
puts foo(1, 2, 3, 4, 5, c:6, d:7, x:1, y:2, z:3).join('; ')
puts "--------------"
def baz(a, defarg=9, *restargs, b, **kwargs)
["a=#{a}", "defarg=#{defarg}", "restargs=#{restargs}", "b=#{b}", "kwargs=#{kwargs}"]
end
puts baz(1, 2).join('; ')
begin
puts baz(1, {:x => 32, :y => 'foo'} ).join('; ')
rescue Exception => e
puts "ERROR: #{e}"
end
puts baz(1, 2, {:x => 32, :y => 'foo'} ).join('; ')
puts baz(1, {:x => 32, :y => 'foo'}, 3, 4).join('; ')
puts baz(1, 2, 3, 4, 5).join('; ')
puts baz(1, 2, 3, 4, 5, c:6, d:7).join('; ')
puts baz(1, 2, 3, 4, 5, c:6, d:7, x:1, y:2, z:3).join('; ')
[ruby-head] [subbu@earth ~/jruby] ruby ir.docs/kwargs.rb
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={}
ERROR: wrong number of arguments (1 for 2+)
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={}
a=1; defarg=9; restargs=[]; b=2; c=; d=5; kwargs={}
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={:x=>32, :y=>"foo"}
a=1; defarg={:x=>32, :y=>"foo"}; restargs=[3]; b=4; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=6; d=7; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=6; d=7; kwargs={:x=>1, :y=>2, :z=>3}
--------------
a=1; defarg=9; restargs=[]; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=6; d=7; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=6; d=7; kwargs={:x=>1, :y=>2, :z=>3}
--------------
a=1; defarg=9; restargs=[]; b=2; kwargs={}
ERROR: wrong number of arguments (1 for 2+)
a=1; defarg=9; restargs=[]; b=2; kwargs={:x=>32, :y=>"foo"}
a=1; defarg={:x=>32, :y=>"foo"}; restargs=[3]; b=4; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={:c=>6, :d=>7}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={:c=>6, :d=>7, :x=>1, :y=>2, :z=>3}
[ruby-head] [subbu@earth ~/jruby] jruby --2.0 -X-CIR ir.docs/kwargs.rb
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={}
ERROR: wrong number of arguments (1 for 2)
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={}
a=1; defarg=9; restargs=[]; b=2; c=; d=5; kwargs={}
a=1; defarg=9; restargs=[]; b=2; c=default; d=kwarg; kwargs={:x=>32, :y=>"foo"}
a=1; defarg={:x=>32, :y=>"foo"}; restargs=[3]; b=4; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=6; d=7; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; c=6; d=7; kwargs={:x=>1, :y=>2, :z=>3}
--------------
a=1; defarg=9; restargs=[]; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=default; d=kwarg; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=6; d=7; kwargs={}
a=1; defarg=2; restargs=[3, 4, 5]; c=6; d=7; kwargs={:x=>1, :y=>2, :z=>3}
--------------
a=1; defarg=9; restargs=[]; b=2; kwargs={}
ERROR: wrong number of arguments (1 for 2)
a=1; defarg=9; restargs=[]; b=2; kwargs={:x=>32, :y=>"foo"}
a=1; defarg={:x=>32, :y=>"foo"}; restargs=[3]; b=4; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={:c=>6, :d=>7}
a=1; defarg=2; restargs=[3, 4]; b=5; kwargs={:c=>6, :d=>7, :x=>1, :y=>2, :z=>3}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment