irpg Community
ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella RPG Maker Academia (https://irpg.in.th/forum-4.html)
+--- Forum: RPG Maker Engine School (https://irpg.in.th/forum-7.html)
+--- Thread: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? (/thread-1071.html)



ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - ancientrein - 03-14-2013

เช้นเราสร้างscriptมา2class testกับ test 2 นะครับถ้าเราตั่งตัวแปรไว้ที่class test เช่น@yes ถ้าเอา@yesมาใช้ในclass test2มันจะอ่านข้อมูลของ@yesออกไหมครับ?


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - TheMoo2000 - 03-14-2013

ไม่ออกครับ ลองได้โดยทำ 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+" ครับผม! แมวน้ำขาว


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - ancientrein - 03-14-2013

แล้วclassที่เขียนว่าgame_actor < game_battler เนี่ย ตรง < game_battler มีความหมายว่าไงครับ?


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - admannon - 03-14-2013

ตรง 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+" ปรากฎขึ้น


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - TheMoo2000 - 03-14-2013

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


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - ancientrein - 03-14-2013

ผมก็ขอขอบคุณมากเช่นกันครับ


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - Mysticphoenix - 03-15-2013

ให้ constructer ของ class รับparameterด้วยก็ได้ครับ ถ้าสมมติว่าทั้งสองคลาสไม่ได้เป็นแม่ลูกกัน


class test2

def initialize(var1)
@yes = var1
end

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

end


ป.ล. โค้ดมั่วเอา ยังไม่ได้ลอง
ให้ทั้งสองคลาสเป็นแม่ลูกกันก็ง่ายสุดแล้ว


RE: ตัวแปรสามาถดึงข้ามclassได้หรือป่าวครับ? - Jirayu - 03-17-2013

ปกติถ้าจะใช้ตัวแปรที่อยู่ในคลาสอื่น คลาสนั้นจะต้องไป extend คลาสนั้นๆ ก่อนครับ