Hi everyone,
I have a question about keyword parameters in Ruby. I know that v1.8.6
doesn’t do this and v1.9 does, and that you can ‘trick’ v1.8.6 into
doing it with hashes.
My question is whether you can do this code:
def aProc(options = {})
a = options[:a] || 5
b = options[:b] || 6
c = options[:c] || 7
print a, b, c
end
in such a way where you wouldn’t have to explicitly say that the local
variable a is equal to the value in the hash with symbol :a? In other
words, to do something like iterate through the hash and turn all of the
symbol keys into local variable with their respective values?
Thanks,
Glenn
----- Original Message ----
From: Jason R. [email protected]
To: ruby-talk ML [email protected]
Sent: Monday, March 3, 2008 4:36:49 PM
Subject: Re: Why is this not implemented in Ruby
Show me a language that does allow you to do this, I’ve never seen it.
Even then, Ruby doesn’t deal with method overloads via parameter
lists, so there’s a fundamental reason why it won’t work:
def foo(a)
end
def foo(a, b)
end
def foo(a, b, c)
end
foo(1) # => ArgumentError: wrong number of arguments (1 for 3)
Ruby 1.9 has keyword arguments, so you’ll be able to get past that
easily then. You can fake it in 1.8 with a hash:
def aProc(options = {})
a = options[:a] || 5
b = options[:b] || 6
c = options[:c] || 7
print a, b, c
end
aProc(:a => 1, :c => 3)
With Ruby 1.9 that will look like (I think, doing this from memory):
aProc(a: 1, c: 3)
Jason