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

อ่าน 3 นาที

ไวยากรณ์การเรียกฟังก์ชันแบบเดียวกัน

ไวยากรณ์ การเรียกฟังก์ชันแบบสม่ำเสมอ ( UFCS ) หรือ ไวยากรณ์การเรียกแบบสม่ำเสมอ ( UCS ) เป็นคุณลักษณะของ ภาษาโปรแกรม ใน ภาษา D [ 1 ] Nim [ 2 ] Koka [ 3 ] Effekt [ 4 ] Lean [ 5 ]...

ไวยากรณ์การเรียกฟังก์ชันแบบเดียวกัน

ไวยากรณ์การเรียกฟังก์ชันแบบสม่ำเสมอ ( UFCS ) หรือไวยากรณ์การเรียกแบบสม่ำเสมอ ( UCS ) เป็นคุณลักษณะของภาษาโปรแกรมในภาษา D [ 1 ] Nim [ 2 ] Koka [ 3 ] Effekt [ 4 ] Lean [ 5 ]และภาษาโปรแกรมอื่นๆ ที่อนุญาตให้เรียกฟังก์ชัน ใดๆ ก็ได้โดยใช้ไวยากรณ์สำหรับการเรียกเมธอด (เช่นเดียวกับ การเขียนโปรแกรมเชิงวัตถุ ) โดยใช้ตัวรับเป็นพารามิเตอร์แรกและอาร์กิวเมนต์ที่กำหนดเป็นพารามิเตอร์ที่เหลือ[ 6 ]เทคนิคเดียวกันนี้ใช้ใน ภาษาสคริปต์ AviSynthภายใต้ชื่อ "สัญกรณ์ OOP" [ 7 ]

UFCS มีประโยชน์อย่างยิ่งเมื่อมีการเรียกฟังก์ชันแบบต่อเนื่อง[ 1 ] (ซึ่งทำงานคล้ายกับท่อหรือตัวดำเนินการ เฉพาะต่างๆ ที่มีอยู่ในภาษาฟังก์ชันสำหรับการส่งผ่านค่าผ่านชุดของนิพจน์ ) อนุญาตให้ฟังก์ชันอิสระทำหน้าที่คล้ายกับเมธอดส่วนขยายในภาษาอื่นๆ ประโยชน์อีกประการหนึ่งของไวยากรณ์นี้เกี่ยวข้องกับระบบการเติมคำอัตโนมัติในIDEซึ่งใช้ข้อมูลประเภทเพื่อแสดงรายการฟังก์ชันที่มีอยู่ โดยขึ้นอยู่กับบริบท เมื่อโปรแกรมเมอร์เริ่มต้นด้วยอาร์กิวเมนต์ ชุดของฟังก์ชันที่อาจนำไปใช้ได้จะถูกจำกัดให้แคบลงอย่างมาก[ 8 ]ช่วยให้ค้นพบได้ง่าย ขึ้น

ตัวอย่าง

ภาษาโปรแกรม D

int first ( int [] arr ) { return arr [ 0 ]; }int [] addone ( int [] arr ) { int [] result ; foreach ( value ; arr ) { result ~= value + 1 ; } return result ; }void main () { auto a = [ 0 , 1 , 2 , 3 ];// ต่อไปนี้ถูกต้องและเทียบเท่ากันทั้งหมดint b = first ( a ); int c = a . first ();// ผูกมัดint [] e = a เพิ่ม() เพิ่ม(); }

ภาษาโปรแกรม Nim

ประเภทVector = tuple [ x , y : int ]proc add ( a , b : Vector ): Vector = ( a . x + b . x , a . y + b . y )ให้v1 = ( x : - 1 , y : 4 ) v2 = ( x : 5 , y : - 2 )# ต่อไปนี้ทั้งหมดถูกต้องv3 = add ( v1 , v2 ) v4 = v1 . add ( v2 ) v5 = v1 . add ( v2 ). add ( v4 )

ข้อเสนอ C++

ข้อเสนอสำหรับการรวมไวยากรณ์การเรียกฟังก์ชันสมาชิกและฟังก์ชันอิสระได้รับการพูดคุยกันตั้งแต่ช่วงแรกๆ ของ การกำหนดมาตรฐาน C++ Glassborow (2004) เสนอไวยากรณ์การเรียกแบบเดียวกัน (UCS) ซึ่งอนุญาตให้เรียกฟังก์ชันอิสระที่มีคำอธิบายประกอบพิเศษด้วยสัญกรณ์ฟังก์ชันสมาชิก[ 9 ] ในปี 2016 มีการเสนอเป็นครั้งที่สองสำหรับการเพิ่มลงใน C++ โดยBjarne Stroustrup [ 10 ]และHerb Sutter [ 8 ] เพื่อลดการตัดสินใจที่คลุมเครือระหว่างการเขียนฟังก์ชันอิสระและฟังก์ชันสมาชิก เพื่อทำให้การเขียนโค้ดเทมเพลต ง่ายขึ้น โปรแกรมเมอร์หลายคนถูกล่อใจให้เขียนฟังก์ชันสมาชิกเพื่อรับประโยชน์ของไวยากรณ์ฟังก์ชันสมาชิก (เช่น " dot-autocomplete " เพื่อแสดงรายการฟังก์ชันสมาชิก ) [ 11 ]อย่างไรก็ตาม สิ่งนี้ทำให้เกิดการเชื่อมโยง ที่มากเกินไป ระหว่างคลาส[ 12 ] ในปี 2023 Herb Sutter [ 13 ]ได้เสนอสิ่งนี้อีกครั้งโดยอ้างถึงข้อมูลและข้อมูลเชิงลึกใหม่ ๆ รวมถึงการใช้งานเชิงทดลองใน คอมไพ เลอร์ cppfront

การใช้คำศัพท์ในภาษา Rust

จนถึงปี 2018 เป็นเรื่องปกติ[ 14 ]ที่จะใช้คำนี้เมื่ออ้างถึงไวยากรณ์เส้นทางที่มีคุณสมบัติ/ชัดเจนและโดยทั่วไปคือไวยากรณ์เส้นทางที่มีคุณสมบัติครบถ้วน : เนื่องจากเป็นไปได้ที่จะมีคุณลักษณะหลายอย่างที่กำหนดวิธีการเดียวกันที่ใช้งานบนโครงสร้างเดียวกัน จึงจำเป็นต้องมีกลไกเพื่อแยกแยะคุณลักษณะที่ควรใช้ ฟังก์ชันสมาชิกยังสามารถใช้เป็นฟังก์ชันอิสระผ่านเส้นทางที่มีคุณสมบัติ (มีเนมสเปซ) คำว่า UFCS ไม่ถูกต้องสำหรับการใช้งานเหล่านี้ เนื่องจากอนุญาตให้ใช้วิธีการเป็นฟังก์ชันอิสระ (มีเนมสเปซ) แต่ไม่อนุญาตให้ใช้ฟังก์ชันอิสระเป็นวิธีการ

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Uniform_function_call_syntax&oldid=1356535537 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ ไวยากรณ์การเรียกฟังก์ชันแบบเดียวกัน

ไวยากรณ์ การเรียกฟังก์ชันแบบสม่ำเสมอ ( UFCS ) หรือ ไวยากรณ์การเรียกแบบสม่ำเสมอ ( UCS ) เป็นคุณลักษณะของ ภาษาโปรแกรม ใน ภาษา D [ 1 ] Nim [ 2 ] Koka [ 3 ] Effekt [ 4 ] Lean [ 5 ]...

ภาษาโปรแกรม D

int first ( int [] arr ) { return arr [ 0 ]; } int [] addone ( int [] arr ) { int [] result ; foreach ( value ; arr ) { result ~= value + 1 ; } return result ; } void main () { auto a = [ 0 , 1 , 2 , 3 ]; // ต่อไปนี้ถูกต้องและเทียบเท่ากันทั้งหมด int b = first...

ภาษาโปรแกรม Nim

ประเภท Vector = tuple [ x , y : int ] proc add ( a , b : Vector ): Vector = ( a . x + b . x , a . y + b . y ) ให้ v1 = ( x : - 1 , y : 4 ) v2 = ( x : 5 , y : - 2 ) # ต่อไปนี้ทั้งหมดถูกต้อง v3 = add ( v1 , v2 ) v4 = v1 . add ( v2 ) v5 = v1 . add ( v2 ).

ข้อเสนอ C++

ข้อเสนอสำหรับการรวมไวยากรณ์การเรียกฟังก์ชันสมาชิกและฟังก์ชันอิสระได้รับการพูดคุยกันตั้งแต่ช่วงแรกๆ ของ การกำหนดมาตรฐาน C++ Glassborow (2004) เสนอไวยากรณ์การเรียกแบบเดียวกัน (UCS) ซึ่งอนุญาตให้เรียกฟังก์ชันอิสระที่มีคำอธิบายประกอบพิเศษด้วยสัญกรณ์ฟังก์ชันสมาชิก...