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

📄 01 - managing class data.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
class Warning  @@translations = { :en => 'Wet Floor',                     :es => 'Piso Mojado' }  def initialize(language=:en)    @language = language  end  def warn    @@translations[@language]  endendWarning.new.warn                              # => "Wet Floor"Warning.new(:es).warn                         # => "Piso Mojado"#---class Fate  NAMES = ['Klotho', 'Atropos', 'Lachesis'].freeze  @@number_instantiated = 0  def initialize    if @@number_instantiated >= NAMES.size      raise ArgumentError, 'Sorry, there are only three Fates.'    end     @name = NAMES[@@number_instantiated]    @@number_instantiated += 1     puts "I give you... #{@name}!"  end  endFate.new# I give you... Klotho!# => #<Fate:0xb7d2c348 @name="Klotho">Fate.new# I give you... Atropos!# => #<Fate:0xb7d28400 @name="Atropos">Fate.new# I give you... Lachesis!# => #<Fate:0xb7d22168 @name="Lachesis">Fate.new# ArgumentError: Sorry, there are only three Fates.#---class Module  def class_attr_reader(*symbols)    symbols.each do |symbol|      self.class.send(:define_method, symbol) do        class_variable_get("@@#{symbol}")      end    end  end    def class_attr_writer(*symbols)    symbols.each do |symbol|      self.class.send(:define_method, "#{symbol}=") do |value|        class_variable_set("@@#{symbol}", value)      end    end  end  def class_attr_accessor(*symbols)    class_attr_reader(*symbols)    class_attr_writer(*symbols)  endend#---Fate.number_instantiated# NoMethodError: undefined method `number_instantiated' for Fate:Classclass Fate  class_attr_reader :number_instantiatedendFate.number_instantiated        # => 3#---

⌨️ 快捷键说明

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