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

时间:2011-12-05 23:22:14

标签: ruby function methods

  

可能重复:
  Ruby functions vs methods

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

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

def saysomething()
  puts "Hello"
end

saysomething

这是一个方法:

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

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

JT

1 个答案:

答案 0 :(得分: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

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