扩展类Proc smth错误的Ruby

时间:2017-04-25 23:44:24

标签: ruby

我编写的代码对我来说是正确的,但由于某种原因无法正常工作

class Funkcja < Proc
   def value(x)
     self.call(x)
   end
end


f = Proc.new {|x| x*x*Math.sin(x)}
puts f.value(2)

我得到的错误是未定义的方法`值'为#

1 个答案:

答案 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