The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
คุณต้องรู้เกี่ยวกับขอบเขตกฎ - ทำความเข้าใจแนวคิดของ "ขอบเขต" ด้วย {... }
ตัวแปรท้องถิ่น
สังเกตผลลัพธ์ที่สร้างจากโค้ดตัวอย่าง ควรมีความชัดเจนเกี่ยวกับความแตกต่างที่สำคัญ สิ่งเหล่านี้ล้วนเป็นตัวแปร "ท้องถิ่น" ภายในขอบเขต {...}
int main( ) {
int X = 10, Y = 15;
{
int X = 20;
{
int X = 30, Y = 35;
brain.Screen.printAt(4,30, "3rd one: %d, %d ", X, Y);
}
brain.Screen.printAt(4, 60, "2nd one: %d, %d", X, Y);
}
brain.Screen.printAt(4, 90, "1st one: %d, %d", X, Y);
return 0;
}
เอาท์พุท:
อันที่ 3: 30, 35
อันที่ 2: 20, 15
อันที่ 1: 10, 15
ตัวอย่างข้างต้นใช้เพื่อการชี้แจงที่ง่ายและรวดเร็ว อย่าใช้ตัวแปรแนวตั้งที่เหมือนกันภายในขอบเขตที่ซ้อนกัน
แล้วการวางตัวแปรไว้นอกบล็อก “main( )” ล่ะ?
ตัวแปรทั่วโลก
การวางตัวแปรไว้นอกบล็อก main( ) แต่ไม่อยู่ในฟังก์ชันอื่นๆ จะทำให้ตัวแปรสามารถใช้งานได้ทั่วโลกโดยทุกฟังก์ชันในโปรเจ็กต์ สิ่งเหล่านี้เรียกว่าตัวแปรระดับโลก
int gValue = 90000; // ตัวแปรนี้เป็นตัวแปรส่วนกลางสำหรับขอบเขตอื่นๆ ทั้งหมด
int main() {
Brain.Screen.setFont(fontType::mono30);
int X = 10;
{
int X = 20, gValue = 8000;
{
int X = 30, gValue = 700;
Brain.Screen.printAt(4, 30, " 3rd one: %d ", gValue + X);
}
Brain.Screen.printAt(4, 60, " 2nd one: %d ", gValue + X);
}
Brain.Screen.printAt(4, 90, " 1st one: %d ", gValue + X);
}
ผลลัพธ์:
อันที่ 3: 730
อันที่ 2: 8020
อันที่ 1: 90010
แนวทางปฏิบัติที่ดีที่สุดคืออย่าใช้ชื่อตัวระบุเดียวกันสำหรับทั้งตัวแปรส่วนกลางและตัวแปรท้องถิ่น
ข้อควรสนใจ: โปรดทราบว่าฉันพูดถึง: "โครงการ" ไม่ใช่ "ไฟล์" โครงการสามารถประกอบด้วยมากกว่าหนึ่งไฟล์ อย่างไรก็ตาม ภายในโปรเจ็กต์เดียว คุณไม่สามารถมีฟังก์ชัน main( ) ได้มากกว่าหนึ่งฟังก์ชัน สิ่งนี้อยู่นอกขอบเขตของบทความนี้ มีกฎเพิ่มเติมบางอย่าง เช่น การใช้ “extern” เกี่ยวกับตัวแปรโกลบอล เรื่องนี้จะกล่าวถึงเพิ่มเติมในหัวข้ออื่นเกี่ยวกับการจัดการไฟล์หลายไฟล์ภายในโปรเจกต์เดียวในไลบรารี VEX
“namespace vex” คืออะไร?
เนมสเปซไม่จำเป็นต้องอยู่ในการสนทนาระหว่างตัวแปร "ท้องถิ่น" กับ "ทั่วโลก" เนื่องจากเนมสเปซไม่ใช่ตัวแปร อย่างไรก็ตาม “เนมสเปซ vex” ไม่มี มีขอบเขตของตัวเอง เนื่องจากเป็นส่วนหนึ่งของโค้ดฐานเทมเพลตที่คุณต้องรวมไว้ในโปรแกรม V5 ทั้งหมดของคุณ กฎขอบเขตสำหรับเนมสเปซจึงควรกล่าวถึงโดยย่อในบทความนี้
แต่ละเนมสเปซเปรียบเสมือนช่องว่างที่คุณสามารถสร้างชุดตัวแปร ซึ่งเป็นฟังก์ชันที่เกี่ยวข้องกับ "ช่องว่าง" แต่ละรายการนั้น คุณสามารถเข้าถึงตัวแปร ฟังก์ชัน คลาส ฯลฯ ที่มีอยู่ทั้งหมดที่กำหนดไว้ภายใน “ช่องว่าง” นี้
คุณสามารถค้นหาเนมสเปซออนไลน์ได้ที่ https://api.vexcode.cloud/v5/html/ หากต้องการค้นหาอย่างรวดเร็ว คุณสามารถคลิกขวาที่ “vex” จากนั้นคลิกที่ “Go to Definition” คุณจะพบข้อมูลมากมายเกี่ยวกับสิ่งที่มีอยู่ในเนมสเปซ “vex”
คุณสามารถเข้าถึงสิ่งเหล่านี้ได้โดยทำ: vex::
เช่น อ้างอิงกลับไปที่โค้ดเทมเพลต:
ใช้เนมสเปซรบกวน;
vex::สมอง สมอง;
นอกจากนี้ ชื่อใดๆ รวมถึงตัวแปร ฟังก์ชัน ฯลฯ ที่ประกาศไว้ภายในช่องว่าง "vex" นี้จะไม่ขัดแย้งกับ "ช่องว่าง" อื่นในโปรแกรม
ตัวอย่างเช่น คุณสามารถตัดสินใจสร้าง "myOwnNamespace" และตั้งชื่อตัวแปรว่า "Brain" ไม่แนะนำให้คุณทำแบบนั้น แต่โปรแกรมจะอนุญาต นั่นเป็นเพราะว่าสิ่งนี้ถูกกำหนดไว้ภายใน "myOwnNamespace"