Tên cho một hàm trả về đối số của nó?


34

Một hàm không làm gì, không có đối số và trả về không có gì được gọi là a noop, hoặc no-op theo truyền thống . Một ví dụ về noop dưới đây:

function noop(){}

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

Vì vậy, có một tên cho một chức năng chỉ có nghĩa là để trả về các đối số của nó, và không làm gì khác? Một ví dụ về loại chức năng này:

function(a){return a}


17
Đối với những người bỏ phiếu gần gũi: Đây không phải là một câu hỏi dựa trên ý kiến, có một câu trả lời dứt khoát.
Daenyth

@Daenyth "Nó cũng thường được gọi là truyền qua" - có thể không dứt khoát như nó xuất hiện
gnat

2
@gnat pass-through được sử dụng để chỉ các phương thức trong một lớp con gọi phương thức cha mà không thay đổi các tham số hoặc bất cứ điều gì phương thức cha trả về. Nhưng siêu phương thức có thể trả về không có gì hoặc một cái gì đó hoàn toàn khác. Trả lại điều tương tự được truyền vào không phải là một phần của định nghĩa về sự vượt qua. Nếu có, đó chỉ là do phương thức cha cụ thể thực hiện điều đó. Trong thực tế, các phương thức lớp OO không làm gì ngoài việc trả về cùng một giá trị mà chúng được truyền là cực kỳ hiếm.
itbruce

4
@Snowman Đó không phải là một tuyên bố thông báo. Trong bất kỳ ngôn ngữ nào hỗ trợ Hàm bậc cao hơn, có thể trả về một hàm có thể thực hiện bất kỳ điều gì tùy ý cho một đầu vào nhất định, rất hữu ích để có thể trả về, trong một số trường hợp, một hàm không thay đổi đầu vào. Nó cho phép các luồng điều khiển được tạo bằng các hàm thay vì từ khóa. Khi gấp một danh sách (hoặc cấu trúc khác) để tạo hàm ghép (như trong trường hợp danh sách khác biệt), hàm nhận dạng thường là giá trị hạt giống tự nhiên.
itbruce

Câu trả lời:


65

Nó được gọi là hàm nhận dạng và đôi khi được viết tắt như idtrong lý thuyết thể loại và ngôn ngữ lập trình chức năng.


4
Mặc dù cần lưu ý rằng hầu hết các lập trình viên không có kiến ​​thức chính thức hoặc kiến ​​thức lập trình chức năng để biết điều đó. Nó cũng thường được gọi là thông qua.
Telastyn

5
Tôi đã thực hiện rất nhiều phép toán chính thức, nhưng vì một số lý do, tôi đã không nhớ câu trả lời cho đến khi tôi thấy điều này và được cung cấp.
Ixrec

5
@Telastyn Và trong Java 8, nó vẫn được gọi là "danh tính". Tên này được nới lỏng khỏi nền toán học / chức năng của nó và trở thành tiêu chuẩn.
Izkata

3
Thật. Và thực tế là nó có một gốc chính thức, kết hợp với nhận thức lan truyền về thuật ngữ này, làm cho nó hữu ích hơn một số thuật ngữ tùy tiện, ngôn ngữ cụ thể.
itbruce 6/03/2015

11
@Telastyn "truyền qua" hầu như luôn được sử dụng trong OO đề cập cụ thể đến các phương thức gọi phương thức của cha mẹ mà không thay đổi các tham số. Điều đó cụ thể và hạn chế hơn khái niệm về chức năng nhận dạng, không chỉ bởi vì phương thức OO thường sẽ không trả về gì hơn là đối số - hoặc một cái gì đó hoàn toàn khác. Vì vậy, trong khi truyền qua sẽ trả về điều tương tự như siêu phương thức, hoàn toàn không bắt buộc phải trả về đối số ban đầu. Đây là những điều khác nhau.
itbruce
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.