📄 15 - making a copy of an object.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 + -