⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 13 - creating an abstract method.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
class Shape2D  def area    raise NotImplementedError.      new("#{self.class.name}#area is an abstract method.")  endendShape2D.new.area# NotImplementedError: Shape2D#area is an abstract method.#---class Square < Shape2D  def initialize(length)    @length = length  end  def area    @length ** 2  endendSquare.new(10).area                              # => 100#---class Shape2D  def initialize    raise NotImplementedError.      new("#{self.class.name} is an abstract class.")  endendShape2D.new# NotImplementedError: Shape2D is an abstract class.#---class Class  def abstract(*args)    args.each do |method_name|      define_method(method_name) do |*args|        if method_name == :initialize          msg = "#{self.class.name} is an abstract class."        else          msg = "#{self.class.name}##{method_name} is an abstract method."        end        raise NotImplementedError.new(msg)     end    end  endend#---class Animal  abstract :initialize, :moveendAnimal.new# NotImplementedError: Animal is an abstract class.#---class Sponge < Animal  def initialize    @type = :Sponge  endendsponge = Sponge.newsponge.move# NotImplementedError: Sponge#move is an abstract method.#---class Cheetah < Animal  def initialize    @type = :Cheetah  end  def move    "Running!"  endendCheetah.new.move# => "Running!"#---class Sponge  def move    "Floating on ocean currents!"  endendsponge.move# => "Floating on ocean currents!"#---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -