irpg Community

Full Version: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
เช้นเราสร้างscriptมา2class testกับ test 2 นะครับถ้าเราตั่งตัวแปรไว้ที่class test เช่น@yes ถ้าเอา@yesมาใช้ในclass test2มันจะอ่านข้อมูลของ@yesออกไหมครับ?
ไม่ออกครับ ลองได้โดยทำ class ใน event ผ่านคำสั่งเรียกใช้สคริปต์ เขียนง่าย ๆ ว่า
[shcode=rails]class test
@yes = "555+"
end
class test2
p @yes #พิมพ์ instance variables ที่ชื่อว่า @yes
end[/shcode]
เมื่อรันจะได้ผลออกมาเป็น nil ครับ แสดงว่ามันเรียกข้าม class ไม่ได้ครับผม
แต่ถ้าเปลี่ยน @yes เป็น $yes (Global Variable) จะได้ผลออกมาเป็น "555+" ครับผม! แมวน้ำขาว
แล้วclassที่เขียนว่าgame_actor < game_battler เนี่ย ตรง < game_battler มีความหมายว่าไงครับ?
ตรง game_actor < game_battler เรียก game_battler ว่าคลาสแม่ หรือ super class ครับ เป็นการสร้างคลาสโดยมีคลาสแม่เป็นหลัก มันจะดึง instance variables จากคลาสแม่ได้ และยังสามารถดึงชุดคำสั่งได้โดยใช้คำสั่ง super ครับ
เช่น (เอาข้อมูลจาก TheMoo2000 มาเลย จะได้เห็นชัด)

[shcode=rails]
class test
@yes = "555+"
end
class test2 < test
p @yes #พิมพ์ instance variables ที่ชื่อว่า @yes
end
[/shcode]

ผลที่ได้มันก็จะมี "555+" ปรากฎขึ้น
น่าจะเป็นการใช้เนื้อหาร่วมกันนะครับ เพราะอย่างเช่น Window_Message มีคำสั่งให้ข้อความมีสีใช่ไหมครับ? แต่สังเกตว่าเขาจะเติม < Window_Base ต่อท้ายด้วย ซึ่งใน Window_Base เนี่ย มีสีของข้อความที่ตั้งไว้ ผมเลยคิดว่าน่าจะเป็นการใช้เนื้อหาร่วมกันน่ะครับผม ในส่วนนี้เองผมก็ยังไม่เข้าใจมากเหมือนกัน ;w;//
@admannon ขอบคุณที่ช่วยตอบให้หายข้องใจไปอีกคน ครับผม! ;w;//
ผมก็ขอขอบคุณมากเช่นกันครับ
ให้ constructer ของ class รับparameterด้วยก็ได้ครับ ถ้าสมมติว่าทั้งสองคลาสไม่ได้เป็นแม่ลูกกัน


class test2

def initialize(var1)
@yes = var1
end

def displayyes
p @yes #พิมพ์ instance variables ที่ชื่อว่า @yes
end

end


ป.ล. โค้ดมั่วเอา ยังไม่ได้ลอง
ให้ทั้งสองคลาสเป็นแม่ลูกกันก็ง่ายสุดแล้ว
ปกติถ้าจะใช้ตัวแปรที่อยู่ในคลาสอื่น คลาสนั้นจะต้องไป extend คลาสนั้นๆ ก่อนครับ