में एक वर्ग के रूप में एक वर्ग के रूप में कक्षा नाम को कैसे पास करें मैं रूबी में एक बहु कक्षा कार्यक्रम बनाने के लिए सीखने की कोशिश कर रहा हूं। मैंने एक इंजन वर्ग और शहर, सड़क इत्यादि जैसे कुछ अन्य वर्गों को कोड किया और कक्षा के नाम को अन्य वर्गों के लिए एक चर के रूप में पारित करने में समस्याएं आ रही हैं। नीचे दिया गया कोड त्रुटि को फेंकता है: "City.rb: 15: 'परिचय' में: # (NameError) के लिए अपरिभाषित स्थानीय चर या विधि गेम"। मैं इस तरह से समस्या को समझता हूं, लेकिन मुझे नहीं लगता कि शहर को गेम ऑब्जेक्ट के बारे में कुछ भी पता होना चाहिए, मुझे लगता है कि इसे केवल इसे प्राप्त करना होगा और इसे वापस पास करना होगा। लेकिन जाहिर है कि कक्षाओं के बीच चर (विशेष रूप से कक्षा का नाम) को पारित करने के बारे में मुझे गलतफहमी है। मेरे डिजाइन में क्या गलत है?रूबी
#Game.rb
require './City.rb'
class Engine
def initialize(city_name, street_name, budget)
@city = City.new(city_name)
@city.read_name()
play(@city, :intro, self)
end
def play(place, next_step, engine)
while true
next_step = place.method(next_step).call(place, next_step, engine)
end
end
end
game = Engine.new("Casablanca", "Costanza Boulvard", 200)
#City.rb
class City
def initialize(city_name)
@city_name = city_name
end
def read_name()
puts <<-READ_NAME
You are in a city called "#{@city_name}".
READ_NAME
end
def intro(place, next_step, engine)
puts "...."
game.play(@street, :enter, engine)
end
end
मुझे नहीं पता कि आप यहां कक्षा का नाम कहां से गुजर रहे हैं। –
इसके अलावा, अपने नामकरण को ठीक करें। 'City.rb' और' game.rb' होना चाहिए (फ़ाइल नाम - सांप_case, कक्षा के नाम - पास्कलकेस)। –
टिप के लिए धन्यवाद। मैंने कक्षा के नाम को इंजन.आरबी # 6 पर स्वयं के रूप में और game.rb # 9 पर परिवर्तनीय इंजन के रूप में पारित करने का प्रयास किया। यह शायद है जहां मैं गलत हूँ। क्या आप मुझे एक उदाहरण का एक ठोस उदाहरण दे सकते हैं कि कक्षा के नाम को किसी अन्य वर्ग में कैसे पारित किया जाए, पूरी तरह से मेरे उदाहरण से अलग? – barerd