तक पहुंच नहीं सकता है (प्रश्न पहले से ही Ruby Forum पर पोस्ट किया गया है, लेकिन वहां कोई जवाब नहीं निकला है)।गतिशील रूप से जोड़ा गया उदाहरण विधि क्लास वेरिएबल
यह मेरा कोड है:
class MC
def initialize
@x = 5
@@y = 6
end
def f
puts @x
puts @@y
end
end
m = MC.new
m.f
m.f
एक त्रुटि के बिना उम्मीद उत्पादन का उत्पादन:
5
6
लेकिन इस:
def m.g
puts @x
puts @@y
end
m.g
पैदा करता है:
5
warning: class variable access from toplevel
NameError: uninitialized class variable @@y in Object
f
से @@y
तक क्यों पहुंच सकता हूं, लेकिन g
से नहीं?
चेतावनी में toplevel
और Object
का उल्लेख और त्रुटि संदेश मुझे परेशान कर रहा है।
@x
5
के रूप में मुद्रित है, इसलिए इसका पर्यावरण MC
है। इसमें की परिभाषा में @x
और @@y
की संभावना को शामिल नहीं किया गया है MC
के बजाय अपूर्ण वातावरण (Object
) देखें।
मुझे त्रुटि संदेश क्यों मिला?
यह पहले पूछा गया था: http://stackoverflow.com/q/24510948/477037 – Stefan
@Stefan: True। दुर्भाग्यवश, वहां भी कोई अच्छी व्याख्या नहीं है। –