Đây là một thủ tục lisp mà chỉ cần thêm 'a' với giá trị tuyệt đối của 'b':Bắt tham chiếu đến đối tượng Function JavaScript đằng sau một nhà điều hành
(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
Tôi nghĩ rằng đây là đẹp, và tôi đang cố gắng để tìm cách viết tốt nhất trong JavaScript. Nhưng mã JavaScript của tôi là không đẹp:
var plus = function(a,b) {
return a + b;
};
var minus = function(a,b) {
return a - b;
};
var aPlusAbsB = function(a,b) {
return (b > 0 ? plus : minus)(a,b);
}
Vấn đề chính là tôi không thể sử dụng +
và -
những biểu tượng như tham chiếu đến các chức năng họ thực sự đại diện như tôi có thể với lisp. Có ai có thể đưa ra một cách duyên dáng hơn để làm một cái gì đó như thế này, hoặc có tôi nhấn một ranh giới ngôn ngữ?
Rõ ràng, tôi có thể làm điều này:
var aPlusAbsB = function(a,b) {
return a + Math.abs(b);
}
, nhưng đây là chi tiết của một thí nghiệm tưởng tượng hơn là một câu hỏi thực tế.
Có cách nào để tôi có thể tham khảo các chức năng chính trong ngôn ngữ JavaScript giống như chúng được người dùng xác định không?
Bạn đã xem Functional.js và cú pháp kỳ quặc dễ thương của nó để biểu diễn các hàm đơn giản dưới dạng chuỗi? – Pointy
Ngoài ra tôi không có ý tưởng cho dù có thực sự là trường hợp chức năng trong bất kỳ ý nghĩa thực sự cho các nhà khai thác số học tích hợp. – Pointy
Tôi đã thấy thư viện Chức năng và trông rất thú vị. Tôi chỉ tự hỏi nếu có bất kỳ cách nào để làm điều này bằng cách sử dụng chỉ JS cốt lõi. Và @Pointy tôi đã tự hỏi điều tương tự. Chúng có thể không phải là các đối tượng Hàm, nhưng có logic ở đó thực hiện tương tự như cách một hàm thực thi. –