Skip to content

Instantly share code, notes, and snippets.

@ahoward

ahoward/a.rb

Last active Aug 29, 2015
Embed
What would you like to do?
make it print all 'true'
# fork it
#
# make it print all true with only ONE LINE OF CODE
class A
def A.foo
@foo ||= (
if self == A
'42.0'
else
inherited = :THIS_NEEDS_TO_INHERIT_THE_DEFAULT_VALUE_FROM_THE_PARENT_CLASS
end
)
end
def A.foo=(foo)
@foo = foo
end
end
class B < A
end
class C < B
end
p( A.foo == B.foo )
p( A.foo.object_id != B.foo.object_id )
p( B.foo == C.foo )
p( B.foo.object_id != C.foo.object_id )
p( A.foo == C.foo )
p( A.foo.object_id != C.foo.object_id )
A.foo = 1
B.foo = 2
C.foo = 3
p( A.foo != B.foo )
p( B.foo != C.foo )
p( A.foo != C.foo )
module M; end
A.send(:extend, M)
B.send(:extend, M)
C.send(:extend, M)
p( A.foo == 1 )
p( B.foo == 2 )
p( C.foo == 3 )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment