กลับไปหน้าบทความ

อ่าน 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 ได้ เนื่องจากไม่มีเมธอดที่จะตอบสนอง

ขอบเขตการทำงานยังได้รับผลกระทบจากสัญลักษณ์ที่นำหน้าชื่อตัวแปรด้วย:

ไพธอน

Pythonไม่มีตัวดำเนินการแก้ไขขอบเขตโดยเฉพาะ การค้นหาชื่อเป็นไปตามกฎ LEGB (Local, Enclosed, Global, Built-in) การเข้าถึงแอตทริบิวต์ของโมดูล คลาส และออบเจ็กต์จะดำเนินการโดยใช้ตัวดำเนินการจุด (.) [ 7 ]

นำเข้าคณิตศาสตร์x = 5 # ตัวแปรทั่วโลกdef outer ():x = 10 # ขอบเขตที่ครอบคลุมdef inner ():print ( x ) # แปลงเป็นขอบเขตที่ครอบคลุมภายใน()ภายนอก()พิมพ์( math . pi ) # การเข้าถึงแอตทริบิวต์โดยใช้ตัวดำเนินการจุด
  • อภิธานศัพท์ C++ ของ Bjarne Stroustrup
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Scope_resolution_operator&oldid=1343574744 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ตัวดำเนินการความละเอียดขอบเขต

ใน การเขียน โปรแกรม คอมพิวเตอร์ ขอบเขต (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`