# Optional parameter in functions

**URL:** <https://www.ruby-forum.com/t/optional-parameter-in-functions/144103>\
**Category:** Ruby\
**Created:** [July 25, 2008, 12:10pm UTC](https://www.ruby-forum.com/t/optional-parameter-in-functions/144103 "2008-07-25T12:10:48Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [July 25, 2008, 12:10pm UTC](https://www.ruby-forum.com/t/optional-parameter-in-functions/144103/1 "2008-07-25T12:10:48Z")

</div>

how do i make a parameter optional. if it is possible.  
for eg. i want to do as follows

function myCall(a,b,c=somedefault)  
…  
end

myCall(a,b,c) or myCall(a,b)

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [July 25, 2008, 12:16pm UTC](https://www.ruby-forum.com/t/optional-parameter-in-functions/144103/2 "2008-07-25T12:16:05Z")

</div>

Junkone wrote:

> how do i make a parameter optional. if it is possible.  
> for eg. i want to do as follows
> 
> function myCall(a,b,c=somedefault)  
> …  
> end  
> myCall(a,b,c) or myCall(a,b)

Except for the fact that in ruby you define methods with “def” and  
not “function”, what you wrote above is perfectly valid ruby code  
and works as intended.

HTH,  
Sebastian

---

<div class="post-metadata">

**Author:** ![Junkone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/e274bd/32.png) [@Junkone](https://www.ruby-forum.com/u/Junkone)\
**Post date:** [July 25, 2008, 12:16pm UTC](https://www.ruby-forum.com/t/optional-parameter-in-functions/144103/3 "2008-07-25T12:16:41Z")

</div>

2008/7/25 Junkone [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> how do i make a parameter optional. if it is possible.  
> for eg. i want to do as follows
> 
> function myCall(a,b,c=somedefault)  
> …  
> end
> 
> myCall(a,b,c) or myCall(a,b)

You’ve got the basic idea. You just set the optional parameter to a  
default value

> > def hello( who = “World” )  
> > puts “Hello, #{who}”  
> > end  
> > =\> nil  
> > hello “Bob”  
> > Hello, Bob  
> > =\> nil  
> > hello  
> > Hello, World  
> > =\> nil

Farrel
