Ruby/Class/to String
Материал из Wiki.crossplatform.ru
Содержание |
class to string
#!/usr/bin/env ruby class Name def family_name=( family ) @family_name = family end def given_name=( given ) @given_name = given end end n = Name.new n.family_name= "A" # => "A" n.given_name= "B" # => "B" p n #<Name:0x325140 @family_name="A", @given_name="B">
Format ourselves as a string by appending our lyrics to our parent"s #to_s value.
class CD include Comparable @@plays = 0 attr_reader :name, :artist, :duration attr_writer :duration def initialize(name, artist, duration) @name = name @artist = artist @duration = duration @plays = 0 end def to_s "CD: #@name--#@artist (#@duration)" end def inspect self.to_s end def <=>(other) self.duration <=> other.duration end end class NewCD < CD def initialize(name, artist, duration, lyrics) super(name, artist, duration) @lyrics = lyrics end def to_s super + " [#@lyrics]" end end d = NewCD.new("A", "B", 225, "C") d.to_s
Getting a Human-Readable Printout of Any Object
a = [1,2,3] puts a puts a.to_s puts a.inspect puts /foo/ # (?-mix:foo) puts /foo/.inspect # /foo/
Override a to_s method after inheritance
class CD include Comparable @@plays = 0 attr_reader :name, :artist, :duration attr_writer :duration def initialize(name, artist, duration) @name = name @artist = artist @duration = duration @plays = 0 end def to_s "CD: #@name--#@artist (#@duration)" end def inspect self.to_s end def <=>(other) self.duration <=> other.duration end end class NewCD < CD def initialize(name, artist, duration, lyrics) super(name, artist, duration) @lyrics = lyrics end def to_s super + " [#@lyrics]" end end class NewCD def to_s super end end d = NewCD.new("A", "S", 1, "C") d.to_s