Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

in ruby is there a distinction between a method and function [duplicate]

Possible Duplicate:
Ruby functions vs methods

Im just reading some ruby documentation and t seems to use the term function and method in an interchangeable way, i jut wanted to know if there is any distinction?

the docs im looking at refer to this as a function:

def saysomething()
  puts "Hello"
end

saysomething

and this a method:

def multiply(val1, val2 )
  result = val1 * val2
  puts result
end

this may be a something semantic but i wanted to check

jt

like image 651
jonathan topf Avatar asked Dec 05 '11 23:12

jonathan topf


People also ask

Are methods and functions the same Ruby?

Answer 5092b6184d91fe0200000453. Ruby blocks are not functions or methods.

What is the difference between method and function?

Difference Between Function and Method:A function can pass the data that is operated and may return the data. The method operates the data contained in a Class. Data passed to a function is explicit. A method implicitly passes the object on which it was called.

Is method defined Ruby?

Defining & Calling the method: In Ruby, the method defines with the help of def keyword followed by method_name and end with end keyword. A method must be defined before calling and the name of the method should be in lowercase. Methods are simply called by its name.

What happens when you call a method in Ruby?

In ruby, the concept of object orientation takes its roots from Smalltalk. Basically, when you call a method, you are sending that object a message. So, it makes sense that when you want to dynamically call a method on an object, the method you call is send . This method has existed in ruby since at least 1.8.


1 Answers

In Ruby, there are not two separate concepts of methods and functions. Some people still use both terms, but in my opinion, using "function" when talking about Ruby is incorrect. There do not exist executable pieces of code that are not defined on objects, because there is nothing in Ruby that is not an object.

As Dan pointed out, there's a way to call methods that makes them look like functions, but the underlying thing is still a method. You can actually see this for yourself in IRB with the method method.

> def zomg; puts "hi"; end
#=> nil
> method(:zomg)
#=> #<Method: Object#zomg>
> Object.private_instance_methods.sort
#=> [..., :zomg]
# the rest of the list omitted for brevity

So you can see, the method zomg is an instance method on Object, and is included in Object's list of private instance methods.

like image 115
Emily Avatar answered Sep 20 '22 20:09

Emily