Tag: 抽象

ruby中的抽象方法(> = 2.2.0)……它们是否存在?

我正在为接口编写基类。我希望所有inheritance的类实现一些方法,有没有办法让它们成为现实? 我有一个payment_method_base类,我将inheritance。 我希望我所有的payment_method类都实现方法kind() ,它将返回一个字符串,例如’credit_card’或’braintree’或’paypal’或’amazon_pay’ …… 有没有办法确保从payment_method_baseinheritance的类被强制实现方法kind() 请记住,新的payment_method类的创建者在创建类之前可能不知道这些要求。 在java中,这些称为抽象方法。 我想知道ruby是否有类似的东西? https://github.com/shuber/defined/blob/master/lib/defined.rb —-进化 我想知道是否已经修复了允许抽象方法的语言。 —-部分答案这个答案可能是添加我需要的钩子的线索。 是否有类似于inheritance的类#的钩子只在Ruby类定义之后触发? 这并不像我预期的那样工作。 呼叫似乎没有在正确的时间完成。 即便如此,有多少gem处理它。 https://github.com/shuber/defined/blob/master/lib/defined.rb 简单地回答我不能提交,因为这是一个没有真正答案的问题的重复。 def self.abstract(*methods_array) @@must_abstract ||= [] @@must_abstract = Array(methods_array) end def self.inherited(child) trace = TracePoint.new(:end) do |tp| if tp.self == child #modules also trace end we only care about the class end trace.disable missing = ( Array(@@must_abstract) […]