在ruby中,方法和函数之间存在区别

jon*_*opf 6 ruby methods function

可能重复:
Ruby函数与方法

我只是阅读一些ruby文档,似乎以可互换的方式使用术语函数和方法,我想知道是否有任何区别?

我正在看的文档将此称为函数:

def saysomething()
  puts "Hello"
end

saysomething
Run Code Online (Sandbox Code Playgroud)

这个方法:

def multiply(val1, val2 )
  result = val1 * val2
  puts result
end
Run Code Online (Sandbox Code Playgroud)

这可能是一种语义,但我想检查

JT

Emi*_*ily 10

在Ruby中,没有两个独立的方法和函数概念.有些人仍然使用这两个术语,但在我看来,在谈论Ruby时使用"function"是不正确的.不存在未在对象上定义的可执行代码片段,因为Ruby中没有任何内容不是对象.

正如Dan指出的那样,有一种方法可以调用使它们看起来像函数的方法,但底层的东西仍然是一种方法.您可以使用该method方法在IRB中实际看到这一点.

> 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
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,该方法zomg是Object上的一个实例方法,并包含在Object的私有实例方法列表中.