<- About this chapter
Classes and methods ->

Functions

What is a function?

A function is a method that is not associated with any particular object. You have already seen one function: "puts". Notice the syntax:


puts "Hello" # instead of: object.puts "Hello"  
                       

Hello World with a function

Here is a simple function:


def say_hi
    puts "Hello, How are you?"  
end
                       

Now we have defined the function say_hi. When you call the function "say_hi", the block of code you specified gets called. For example:


def say_hi
    puts "Hello, How are you?"  
end

say_hi
say_hi
                       

Will produce:


"Hello, How are you?"
"Hello, How are you?"
                       

As you can see, functions are the first step in code reuse.

Function parameters

Functions and methods can be passed parameters. Here is an improved say_hi function.


# 'name' contains the user input
def say_hi(name)
    puts "Hello " + name + ", How are you?"  
end

say_hi("Daniel")
say_hi "Sandy" 
                       

This produces:


Hello Daniel, How are you?  
Hello Sandy, How are you?
                       

Printing an address

Now let's write a more useful function. Recall the address structures:


# Melissa's address
melissa_addr = {
	"street" => "23 St George St.",  
	"city"   => "Silver Spring",
	"state"  => "MD",
	"zip"    => "20465"
}

# Sandy's address
sandy_addr = {
	"street" => "324 Campus Dr.",
	"city"   => "College Park",
	"state"  => "MD",
	"zip" 	 => "23659"
}
                       

Let's make a function to print them:


def print_addr(address)
    state = address["state"]
    zip   = address["zip"]

    puts "    " + address["street"]  
    puts "    " + address["city"]
    puts "    " + state ", " + zip
end
                       

Now we can easily print addresses with:


puts "Melissa:"
print_addr(melissa_addr)  

puts "Sandy:"
print_addr(sandy_addr)
                       

And this prints:


Melissa:
    23 St George St.  
    Silver Spring
    MD, 20465
Sandy:
    324 Campus Dr.
    College Park
    MD, 23659
                       
<- About this chapter
Classes and methods ->