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

📄 15 - making a copy of an object.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
s1 = 'foo'                                       # => "foo"s2 = s1.clone                                    # => "foo"s1[0] = 'b'[s1, s2]                                         # => ["boo", "foo"]#---material = 'cotton'class << material  def definition     puts 'The better half of velour.'  endendmaterial.definition# The better half of velour.'cotton'.definition# NoMethodError: undefined method `definition' for "cotton":Stringmaterial.clone.definition# The better half of velour.material.dup.definition               # NoMethodError: undefined method `definition' for "cotton":String#---class StringHolder   attr_reader :string  def initialize(string)    @string = string  endends1 = StringHolder.new('string')s2 = s1.dups3 = s1.clones1.string[1] = 'p's2.string                                      # => "spring"s3.string                                      # => "spring"#---class Object  def deep_copy    Marshal.load(Marshal.dump(self))  endends1 = StringHolder.new('string')s2 = s1.deep_copys1.string[1] = 'p's1.string                                     # => "spring"s2.string                                     # => "string"#---class << s1  def definition     puts "We hold strings so you don't have to."  end  ends1.deep_copy# TypeError: singleton can't be dumped#---class StringHolder  def initialize_copy(from)   @string = from.string.dup  endends1 = StringHolder.new('string')s2 = s1.dups3 = s1.clones1.string[1] = "p"s2.string                                      # => "string"s3.string                                      # => "string"#---

⌨️ 快捷键说明

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