ชื่อฟังก์ชั่นที่คืนค่าอาร์กิวเมนต์?


34

ฟังก์ชั่นที่ไม่ทำอะไรเลยไม่มีการโต้แย้งและคืนสิ่งใด ๆ ที่เรียกว่า a noopหรือ no-op ตัวอย่างของ noop อยู่ด้านล่าง:

function noop(){}

http://en.wikipedia.org/wiki/NOP

ดังนั้นมีชื่อฟังก์ชั่นซึ่งมีความหมายเพียงเพื่อกลับอาร์กิวเมนต์ของมันและไม่ทำอะไรอย่างอื่น? ตัวอย่างของฟังก์ชันประเภทนี้:

function(a){return a}


17
สำหรับผู้มีสิทธิเลือกตั้ง: นี่ไม่ใช่คำถามตามความคิดเห็น แต่ก็มีคำตอบที่ชัดเจน
Daenyth

@Denenyth "มันเป็นที่รู้จักกันทั่วไปว่าเป็น pass-through" - อาจจะไม่ชัดเจนเท่าที่ปรากฏ
gnat

2
@gnat pass-through ถูกใช้เพื่ออ้างถึงเมธอดในคลาสย่อยที่เรียกใช้เมธอด parent โดยไม่เปลี่ยนพารามิเตอร์หรือสิ่งที่เมธอด parent ส่งคืน แต่วิธีการขั้นสูงอาจไม่ส่งคืนสิ่งใดหรือสิ่งใดที่แตกต่างอย่างสิ้นเชิง การส่งคืนสิ่งเดียวกันที่ผ่านเข้ามาไม่ได้เป็นส่วนหนึ่งของคำจำกัดความของการส่งผ่าน หากเป็นเช่นนั้นนั่นก็เป็นเพราะวิธีหลักเท่านั้นทำเช่นนั้น ในความเป็นจริงวิธีการเรียน OO ซึ่งไม่ทำอะไรเลย แต่คืนค่าเดียวกันที่พวกเขาผ่านไปนั้นหายากมาก
itsbruce

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

คำตอบ:


65

มันเรียกว่าฟังก์ชั่นเอกลักษณ์และบางครั้งก็ยากidในทฤษฎีหมวดหมู่และภาษาโปรแกรมการทำงาน


4
แม้ว่าควรสังเกตว่าโปรแกรมเมอร์ส่วนใหญ่ไม่มีพื้นฐานอย่างเป็นทางการหรือความรู้การเขียนโปรแกรมการทำงานรู้ว่า มันยังเป็นที่รู้จักกันทั่วไปว่าเป็นผ่าน
Telastyn

5
ฉันทำคณิตศาสตร์อย่างเป็นทางการมากมาย แต่ด้วยเหตุผลบางอย่างฉันจำคำตอบไม่ได้จนกว่าฉันจะเห็นสิ่งนี้และใบหน้าของฉัน
Ixrec

5
@Telastyn และในชวา 8ก็ยังคงเรียกว่า "ตัวตน" ชื่อกำลังคลายลงจากพื้นหลังทางคณิตศาสตร์ / การทำงานและกลายเป็นมาตรฐาน
Izkata

3
จริง และความจริงที่ว่ามันมีรูตอย่างเป็นทางการเมื่อรวมกับการแพร่กระจายการรับรู้ของคำศัพท์ทำให้มีประโยชน์มากกว่าศัพท์แสงเฉพาะบางภาษาโดยพลการ
itsbruce

11
@Telastyn "pass through" มักใช้ใน OO อ้างอิงถึงวิธีการที่เรียกใช้เมธอดของพาเรนต์โดยไม่ต้องเปลี่ยนพารามิเตอร์ นั่นคือทั้งเจาะจงและ จำกัด มากกว่าแนวคิดของฟังก์ชั่นเอกลักษณ์ไม่น้อยเพราะวิธีการ OO มักจะไม่ส่งคืนอะไรมากกว่าการโต้แย้ง - หรือสิ่งที่แตกต่างอย่างสิ้นเชิง ดังนั้นในขณะที่ pass-through จะส่งคืนเช่นเดียวกับวิธี super มันไม่จำเป็นเลยที่จะต้องส่งคืนอาร์กิวเมนต์ดั้งเดิม สิ่งเหล่านี้แตกต่างกัน
58
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.