# Default parameter values for methods in Ruby 1.9

**URL:** <https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465>\
**Category:** Ruby\
**Created:** [July 21, 2009, 11:35pm UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465 "2009-07-21T23:35:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 21, 2009, 11:35pm UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/1 "2009-07-21T23:35:16Z")

</div>

Hi, I expected that the following is valid in Ruby 1.9:

def get\_element(auid, document=nil, selector, check\_etag=true)  
[…]  
end

However I get an error:

syntax error, unexpected ‘=’, expecting ‘)’ (SyntaxError) …,  
element\_selector, check\_etag=true)  
^

Thanks for any tip.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 21, 2009, 11:45pm UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/2 "2009-07-21T23:45:48Z")

</div>

IÃ±aki Baz C. wrote:

> Hi, I expected that the following is valid in Ruby 1.9:
> 
> def get\_element(auid, document=nil, selector, check\_etag=true)  
> […]  
> end

What do you expect

get\_element(1,2,3)

to do?

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 22, 2009, 12:25am UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/3 "2009-07-22T00:25:32Z")

</div>

El Martes, 21 de Julio de 2009, Joel VanderWerf escribiÃ³:

> to do?

auid = 1  
document = 2  
selector = 3  
check\_etag = true

Humm, I understand now… Having it, the second parameter “document=nil”  
is  
useless at all since it requires being declared anyway.

Ok, I’ve solved my problem by leaving the method as follows:

def get\_element(auid, document, selector, check\_etag=true)

Thanks a lot.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 22, 2009, 12:43am UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/4 "2009-07-22T00:43:20Z")

</div>

IÃ±aki Baz C. wrote:

> Hi, I expected that the following is valid in Ruby 1.9:
> 
> def get\_element(auid, document=nil, selector, check\_etag=true)  
> […]  
> end
> 
> However I get an error:
> 
> syntax error, unexpected ‘=’, expecting ‘)’ (SyntaxError) …,  
> element\_selector, check\_etag=true)  
> ^
> 
> Thanks for any tip.

You couldn’t you rearrange it to?

def get\_element(auid, selector, document=nil, check\_etag=true)  
[…]  
end

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 22, 2009, 1:05am UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/5 "2009-07-22T01:05:51Z")

</div>

El MiÃ©rcoles, 22 de Julio de 2009, Joseph L. escribiÃ³:

> > element\_selector, check\_etag=true)  
> > ^
> > 
> > Thanks for any tip.
> 
> You couldn’t you rearrange it to?
> 
> def get\_element(auid, selector, document=nil, check\_etag=true)  
> […]  
> end

Yes, I could, but I prefer to keep the order.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [July 22, 2009, 12:28pm UTC](https://www.ruby-forum.com/t/default-parameter-values-for-methods-in-ruby-1-9/172465/6 "2009-07-22T12:28:24Z")

</div>

IÃ±aki Baz C. wrote:

> Hi, I expected that the following is valid in Ruby 1.9:
> 
> def get\_element(auid, document=nil, selector, check\_etag=true)  
> […]  
> end
> 
> However I get an error:
> 
> syntax error, unexpected ‘=’, expecting ‘)’ (SyntaxError) …,  
> element\_selector, check\_etag=true)  
> ^
> 
> Thanks for any tip.

def get\_element(auid, \*rest)  
case rest.size  
… etc  
end

Are you saying that get\_element(1,2) would use auid=1 and selector=2,  
but get\_element(1,2,3) would use auid=1 and document=2 and selector=3?  
If so it might be slightly better documented as

def get\_element(auid, document\_or\_selector, \*rest)  
case rest.size  
when 0  
document = nil  
selector = document\_or\_selector  
check\_etag = true  
when 1  
document = document\_or\_selector  
selector = rest[0]  
check\_etag = true  
when 2  
document = document\_or\_selector  
selector = rest[0]  
check\_etag = rest[1]  
else  
raise ArgumentError, “wrong number of arguments (#{rest.size}+2)”  
end  
… etc  
end
