Keyword arguments in Ruby

Is it possbile for Ruby to have keyword arguments added in like in
Python.

Quote from Python documentation:

4.7.2 Keyword Arguments
Functions can also be called using keyword arguments of the form
"keyword = value". For instance, the following function:

def parrot(voltage, state=‘a stiff’, action=‘voom’, type=‘Norwegian
Blue’):
print “-- This parrot wouldn’t”, action,
print “if you put”, voltage, "Volts through it."
print “-- Lovely plumage, the”, type
print “-- It’s”, state, “!”

could be called in any of the following ways:

parrot(1000)
parrot(action = ‘VOOOOOM’, voltage = 1000000)
parrot(‘a thousand’, state = ‘pushing up the daisies’)
parrot(‘a million’, ‘bereft of life’, ‘jump’)

but the following calls would all be invalid:

parrot() # required argument missing
parrot(voltage=5.0, ‘dead’) # non-keyword argument following keyword
parrot(110, voltage=220) # duplicate value for argument
parrot(actor=‘John Cleese’) # unknown keyword

http://www.rubyist.net/~matz/slides/rc2003/mgp00026.html

···

On Sun, Jan 25, 2004 at 03:09:58PM +0900, grom wrote:

Is it possbile for Ruby to have keyword arguments added in like in
Python.


_ _

__ __ | | ___ _ __ ___ __ _ _ __
'_ \ / | __/ __| '_ _ \ / ` | ’ \
) | (| | |
__ \ | | | | | (| | | | |
.__/ _,
|_|/| || ||_,|| |_|
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com

We are using Linux daily to UP our productivity - so UP yours!
– Adapted from Pat Paulsen by Joe Sloan

They’re going to be added in ruby2.0.

In the meanwhile you can
use instance eval to have something like this:
Parrot.new{action=‘voom’; type=‘norwegian blue’} like in the bindings
for Tk.
Or use an hash to do something like this:
Parrot.new(:action=>‘voom’,:type=>‘norwegian_blue’)

···

il 24 Jan 2004 22:09:53 -0800, grom_3@optusnet.com.au (grom) ha scritto::

Is it possbile for Ruby to have keyword arguments added in like in
Python.

I supposed I answered but my msg didn’t show up on comp.lang.ruby.
Sorry if I double post:

kwd args are goin to be included in ruby2.0
Until that you can emulate them via instance_eval like in tk

Parrot.new{state=‘a stiff’}
or explicitly using an hash:
Parrot.new(:state=>‘a stiff’)

···

il 24 Jan 2004 22:09:53 -0800, grom_3@optusnet.com.au (grom) ha scritto::

Is it possbile for Ruby to have keyword arguments added in like in
Python.

Mauricio Fernández wrote:

···

On Sun, Jan 25, 2004 at 03:09:58PM +0900, grom wrote:

Is it possbile for Ruby to have keyword arguments added in like in
Python.

http://www.rubyist.net/~matz/slides/rc2003/mgp00026.html

It might be instructive for the newcomers to note that this slide refers to “visions for the future”, not current functionality.