5 Mar 2009
Just a small script I wrote to play around with various ways of passing parameters in Ruby:
#!/usr/bin/ruby def restaurant1(meal, food = {}) meat = (food[:meat] || "chicken") veg = (food[:veg] || "broccoli") puts "For #{meal} you are having grilled #{meat} with steamed #{veg}." end restaurant1 "lunch", {:meat => "beef", :veg => "asparagus"} # can omit curly brackets if last arg is a hash restaurant1 "lunch", :meat => "beef", :veg => "asparagus" def restaurant2(meal, *food) # food is an array meat = food.shift veg = food.shift puts "For #{meal} you are having grilled #{meat} with steamed #{veg}." end restaurant2 "dinner", "beef", "asparagus" def restaurant3(meal, courses = {}) puts "For #{meal}:" courses.each do |key,value| # hash - courses may come out of order puts " * #{key.to_s} will be #{value.join(', ')}." end # or force order, handle non-specified courses puts "For #{meal}:" if courses.key?(:entree) puts " * Entree - #{courses[:entree].join(', ')}." else puts " * No Entree" end if courses.key?(:dessert) puts " * Entree - #{courses[:dessert].join(', ')}." else puts " * No Dessert." end end # can omit curly brackets if last arg is a hash restaurant3 "supper", :entree => ["soup", "bread"], :main => ["beef", "potatoes", "peas"]comments powered by Disqus