Skip to content

Instantly share code, notes, and snippets.

@ahoward
Last active August 29, 2015 14:01
Show Gist options
  • Save ahoward/c82cc7813c1c1088568f to your computer and use it in GitHub Desktop.
Save ahoward/c82cc7813c1c1088568f to your computer and use it in GitHub Desktop.
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