我编写的代码对我来说是正确的,但由于某种原因无法正常工作
class Funkcja < Proc
def value(x)
self.call(x)
end
end
f = Proc.new {|x| x*x*Math.sin(x)}
puts f.value(2)
我得到的错误是未定义的方法`值'为#
答案 0 :(得分:2)
从Proc获得它是非常不寻常的,但如果你愿意的话,那很好。您只需要使用您创建的课程:
f = Funkcja.new {|x| x*x*Math.sin(x)}
class F < Proc
声明不扩展 Proc,它会创建一个子类。
这里很奇怪,因为你所做的只是为call
方法创建一个别名。您可以使用alias_method
执行此操作:
class Funkcja < Proc
alias_method :value, :call
end