我只是阅读一些ruby文档并且似乎以可互换的方式使用术语函数和方法,我想知道是否有任何区别?
我正在研究的文档将此称为函数:
def saysomething()
puts "Hello"
end
saysomething
这是一个方法:
def multiply(val1, val2 )
result = val1 * val2
puts result
end
这可能是一种语义,但我想检查
JT
答案 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的私有实例方法列表中。