This could be done more simply by accepting unlimited arguments with the \* operator, which turns arguments into an array, so then after flattening (in case arrays were passed in), all arguments could be treated the same way:
	def multiply(\*numbers)
		numbers.flatten.inject(:\*)
	end