อ่าน 3 นาที
ตัวดำเนินการความละเอียดขอบเขต
ใน การเขียน โปรแกรม คอมพิวเตอร์ ขอบเขต (scope) คือบริบทที่ครอบคลุมซึ่ง ค่า และ นิพจน์ต่างๆ เกี่ยวข้องอยู่ ตัวดำเนิน การระบุขอบเขต (scope resolution operator)...
ตัวดำเนินการความละเอียดขอบเขต
ใน การเขียน โปรแกรมคอมพิวเตอร์ขอบเขต (scope)คือบริบทที่ครอบคลุมซึ่งค่าและนิพจน์ต่างๆเกี่ยวข้องอยู่ ตัวดำเนินการระบุขอบเขต (scope resolution operator)ช่วยในการระบุและกำหนดบริบทที่ตัวระบุอ้างถึง โดยเฉพาะอย่างยิ่งโดยการระบุเนมสเปซหรือคลาสการใช้งานเฉพาะจะแตกต่างกันไปในภาษาการเขียนโปรแกรม ต่างๆ ที่มีแนวคิดเรื่องขอบเขต ในหลายภาษา ตัวดำเนินการระบุขอบเขตจะเขียนว่า::.
ในบางภาษา โดยเฉพาะภาษาที่ได้รับอิทธิพลจากModula-3 (รวมถึงPythonและGo ) โมดูลเป็นอ็อบเจ็กต์และการกำหนดขอบเขตภายในโมดูลเป็นกรณีพิเศษของการเข้าถึงสมาชิกของอ็อบเจ็กต์ตามปกติ ดังนั้นจึง.ใช้ตัวดำเนินการเมธอดตามปกติสำหรับการกำหนดขอบเขต ภาษาอื่นๆ โดยเฉพาะC++และRubyมีทั้งการกำหนดขอบเขตและการเข้าถึงเมธอด ซึ่งมีปฏิสัมพันธ์กันในรูปแบบต่างๆ ดูตัวอย่างด้านล่าง
ซี++
คลาสA { public : static int i ; // ขอบเขตของ i คือ A };namespace B { int c = 2 ; } // namespace Bint A :: i = 4 ; // ตัวดำเนินการขอบเขตอ้างอิงถึงจำนวนเต็ม i ที่ประกาศไว้ในคลาส A int x = B :: c ; // ตัวดำเนินการขอบเขตอ้างอิงถึงจำนวนเต็ม c ที่ประกาศไว้ในเนมสเปซ Bพีพี
ในPHPตัวดำเนินการแก้ไขขอบเขตเรียกอีกอย่างว่าPaamayim Nekudotayim ( ฮีบรู : פעמיים נקודותיים , อ่านว่า[paʔaˈmajim nekudoˈtajim]ซึ่งเป็นคำที่สองที่แปลว่าการทุจริตในภาษาพูด[ 1 ]ของ נקודתים ออกเสียงว่า[nekudaˈtajim] ) ซึ่งแปลว่า "double colon " ในภาษาฮีบรู[ 2 ] [ 3 ]
ชื่อ "Paamayim Nekudotayim" ถูกนำมาใช้ในZend Engine 0.5 ที่พัฒนาโดยอิสราเอล [ 4 ] ซึ่งใช้ใน PHP 3ในตอนแรก ข้อความแสดงข้อผิดพลาดใช้เพียงชื่อโทเค็นภายในสำหรับทำให้เกิดความสับสนสำหรับผู้ที่ไม่พูดภาษาฮีบรู เรื่องนี้ได้รับการชี้แจงใน PHP 5.4 ดังต่อไปนี้: ::T_PAAMAYIM_NEKUDOTAYIM
$ php -r :: ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์ พบ '::' โดยไม่คาดคิด (T_PAAMAYIM_NEKUDOTAYIM)ตั้งแต่ PHP 8 เป็นต้นไป ชื่อภาษาฮีบรูจะถูกลบออกจากข้อความแสดงข้อผิดพลาด: [ 5 ] [ 6 ]
$ php -r :: ข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์, โทเค็นที่ไม่คาดคิด "::", คาดว่าจะถึงจุดสิ้นสุดของไฟล์ในโค้ดบรรทัดคำสั่งในบรรทัดที่ 1ทับทิม
ในภาษา Rubyการกำหนดขอบเขตของขอบเขตสามารถทำได้โดยใช้คีย์เวิร์ด `module`
โมดูลตัวอย่างเวอร์ชัน= 1.0class << self # เรากำลังเข้าถึงคลาสซิงเกิลตันของโมดูลdef hello ( who = "world" ) "Hello #{ who } " end end end #/ตัวอย่างตัวอย่าง:: hello # => "Hello world" ตัวอย่าง. hello "hacker" # => "Hello hacker"ตัวอย่าง:: เวอร์ชัน# => 1.0 ตัวอย่างเวอร์ชัน# NoMethodError# นี่แสดงให้เห็นถึงความแตกต่างระหว่างตัวดำเนินการข้อความ (.) และตัวดำเนินการขอบเขตใน Ruby (::) # เราสามารถใช้ทั้ง ::hello และ .hello ได้ เพราะ hello เป็นส่วนหนึ่งของขอบเขตของ Example และเพราะ Example # ตอบสนองต่อข้อความ hello # # เราไม่สามารถทำเช่นเดียวกันกับ ::Version และ .Version ได้ เพราะ Version อยู่ภายในขอบเขตของ Example แต่# Example ไม่สามารถตอบสนองต่อข้อความ Version ได้ เนื่องจากไม่มีเมธอดที่จะตอบสนองขอบเขตการทำงานยังได้รับผลกระทบจากสัญลักษณ์ที่นำหน้าชื่อตัวแปรด้วย:
- "
$- ตัวแปรทั่วโลก - "
@" - ตัวแปรอินสแตนซ์ของself - "
@@" - ตัวแปรคลาส - ไม่มีสัญลักษณ์ ตัวอักษรพิมพ์เล็ก หรือเครื่องหมายขีดล่าง - ตัวแปร หรือเมธอดภายใน
- ไม่มีสัญลักษณ์ ตัวอักษรพิมพ์ใหญ่ - คงที่
ไพธอน
Pythonไม่มีตัวดำเนินการแก้ไขขอบเขตโดยเฉพาะ การค้นหาชื่อเป็นไปตามกฎ LEGB (Local, Enclosed, Global, Built-in) การเข้าถึงแอตทริบิวต์ของโมดูล คลาส และออบเจ็กต์จะดำเนินการโดยใช้ตัวดำเนินการจุด (.) [ 7 ]
นำเข้าคณิตศาสตร์x = 5 # ตัวแปรทั่วโลกdef outer ():x = 10 # ขอบเขตที่ครอบคลุมdef inner ():print ( x ) # แปลงเป็นขอบเขตที่ครอบคลุมภายใน()ภายนอก()พิมพ์( math . pi ) # การเข้าถึงแอตทริบิวต์โดยใช้ตัวดำเนินการจุดลิงก์ภายนอก
- อภิธานศัพท์ C++ ของ Bjarne Stroustrup
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ตัวดำเนินการความละเอียดขอบเขต
ใน การเขียน โปรแกรม คอมพิวเตอร์ ขอบเขต (scope) คือบริบทที่ครอบคลุมซึ่ง ค่า และ นิพจน์ต่างๆ เกี่ยวข้องอยู่ ตัวดำเนิน การระบุขอบเขต (scope resolution operator)...
ซี++
คลาส A { public : static int i ; // ขอบเขตของ i คือ A }; namespace B { int c = 2 ; } // namespace B int A :: i = 4 ; // ตัวดำเนินการขอบเขตอ้างอิงถึงจำนวนเต็ม i ที่ประกาศไว้ในคลาส A int x = B :: c ; // ตัวดำเนินการขอบเขตอ้างอิงถึงจำนวนเต็ม c...
พีพี
ใน PHP ตัวดำเนินการแก้ไขขอบเขตเรียกอีกอย่างว่า Paamayim Nekudotayim ( ฮีบรู : פעמיים נקודותיים , อ่านว่า [paʔaˈmajim nekudoˈtajim] ซึ่งเป็นคำที่สองที่แปลว่าการทุจริตในภาษาพูด [ 1 ] ของ נקודתים ออกเสียงว่า [nekudaˈtajim] ) ซึ่งแปลว่า "double colon "...
ทับทิม
ใน ภาษา Ruby การกำหนดขอบเขตของขอบเขตสามารถทำได้โดยใช้คีย์เวิร์ด `module`