【发布时间】:2009-08-07 17:45:53
【问题描述】:
关于 Ruby 的方法、过程和块,我有几个问题让我觉得很奇怪。与其说是语法或功能,不如说是决策背后的逻辑。
问题 1:
为什么块可以传递给方法(例如每个方法)但不能分配给变量?
我知道你可以在过程中传递它们,即p = Proc.new {...}(使用&p 访问),但是让程序员通过这些方式没有多大意义。
问题 2:
为什么要区分方法和程序?
例如,我可以通过以下两种方式完成定义函数和调用该函数的任务:
def square(x)
x**2
end
square(3)
=> 9
或
square = lambda {|x| x**2}
square.call(3)
=> 9
为什么要区分?例如,在 Python 中,以标准方式定义函数和通过 square = lambda x: x**2 完成创建函数并将其分配给 square 的相同任务。
【问题讨论】:
标签: ruby