1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
class C
def to_str
"CCC"
end
end
class D
def to_sym
:DDD
end
end
puts '-- anonymous --'
p Struct.new(:Foo)["f"]
p Struct.new(:Foo, :bar)["f", "g"]
p Struct.new(nil, :bar)["f"]
p Struct.new(:X.to_i)["f"]
p Struct.new(:X.to_i, :bar)["f", "g"]
puts '-- named --'
p Struct.new("Foo")
p Struct.new("Foo", :Foo)["f"]
p Struct.new("Foo", nil) rescue p $!
p Struct.new(C.new, :Foo)["f"]
p Struct.new(D.new, :Foo)["f"] rescue p $!
puts '-- on derived struct --'
class S1 < Struct
end
class S < S1
end
p S.new(:Foo)["f"]
p S.new(:Foo, :bar)["f", "g"]
p S.new(nil, :bar)["f"]
p S.new(:X.to_i)["f"]
p S.new(:X.to_i, :bar)["f", "g"]
p S.new("Foo")
p S.new("Foo", :Foo)["f"]
p S.new("Foo", nil) rescue p $!
p S.new(C.new, :Foo)["f"]
puts '-' * 20
Customer = Struct.new(:name)
p Customer["joe"].class
p Customer["joe"].class.superclass
|