Rubyの定数ネストされたクラスとサブクラスでの参照-相違点

1248 ワード

#    
class Drawing
	PI = 123123
	def Drawing.give_me_a_circle
		Circle.new
	end
	def xpi
		PI
	end
		
	class Line
	end
	class Circle
		def what_am_i
			"This is a circle"
		end
		def pi
			PI
		end		
	end
end

#   
class SubDrawing < Drawing
end

#             :              
PI = 3.1415926
circle = Drawing.give_me_a_circle
drawing = Drawing.new
subdrawing = SubDrawing.new

print "circle.pi=" , circle.pi , "
" print "Drawing::Circle::PI=" , Drawing::Circle::PI , "
" print "subdrawing.pi=" , subdrawing.pi , "
" print "SubDrawing::PI=" , SubDrawing::PI , "
" print "drawing.pi=" , drawing.pi , "
" print "Drawing::PI=" , Drawing::PI , "
"      # class.rb:114: warning: toplevel constant PI referenced by Drawing::Circle::PI circle.pi=123123 # Drawing::Circle::PI=3.1415926 # subdrawing.pi=123123 SubDrawing::PI=123123 drawing.pi=123123 Drawing::PI=123123 ## —— : , : , ; ( :Drawing::Circle::PI),