자바 스크립트에 상응하는 구문이 있습니까? 그렇지 않다면 어떻게 하나를 만들 것입니까?하스켈의 자바 스크립트 용 삽입 연산자
What does the : infix operator do in Haskell?
자바 스크립트에 상응하는 구문이 있습니까? 그렇지 않다면 어떻게 하나를 만들 것입니까?하스켈의 자바 스크립트 용 삽입 연산자
What does the : infix operator do in Haskell?
자바 스크립트를 목록 형식을 가지고 있지 않지만, Array
의가 있습니다
다음은 중위 연산자는 하스켈에서 수행하는 작업에 대한 간단한 설명입니다.
당신은 사용할 수 있습니다 ...
var newArr = [val].concat(arr);
양자 택일로, 당신은 배열에 씁니다 unshift()
를 사용할 수 있지만 원본을 변이합니다.
JavaScript에는 :
연산자, 연산자 오버로딩 또는 연산자와 비슷한 메서드가 없으므로 하스켈과 비슷한 구문을 사용할 수 없습니다.
중위 연산자를 에뮬레이션하는 방법에 대한 예제가있는이 링크를 찾았습니다. http://www.techtangents.com/emulating-infix-operator-syntax-in-javascript/ –
@LeilaHamon 저것은 약간의 진흙이지만 작동하는 경우 :) – alex
링크가 작동하지 않지만 페이지가 [아카이브에 있음] (https://web.archive.org/web/20140610003932/http://www.techtangents.com/emulating-infix-operator) -syntax-in-javascript /). – dfeuer
이 예쁜 아니지만, 당신이 그렇게 코드가 이미 this article on emulating infix operators in JS에 연결 라일라 파문을 보았다
function nfx(firstArg, fn, secondArg){
return fn(firstArg, secondArg);
}
// Usage
function plus(firstArg, secondArg) {
return firstArg + secondArg;
}
nfx(1, plus, 2);
산문처럼 읽고 중위 원하는 위치 장소에서 가독성에 도움이 될 수 있습니다.
그러나 나는 다른 사람들에게 유용한 예가 될 것이라고 생각했다.
다음은 Number
및 Boolean
프로토 타입을 해킹하여 4 < 5 < 10
과 같은 연결 삽입 식을 처리하는 방법입니다.
더 많은 프로토 타입에 더 많은 방법을 적용하여 더 확장 할 수 있습니다. 그것은 약간 못 생겼지 만 쿼리를 간략하게 만드는 데 유용 할 수 있습니다.
//Usage code
(4) .gt (6) .gt (4) //false
(100) .lt (200) .lt (400) . gt(0) . gt(-1)//true
(100) [ '>' ] (50) [ '<' ] (20)//false
//Setup Code
(function(){
var lastVal = null;
var nP = Number.prototype
var bP = Boolean.prototype
nP.gt = function(other){
lastVal = other;
return this > other;
}
nP.lt = function(other){
lastVal = other;
return this < other;
}
bP.gt = function(other){
var result = lastVal > other;
lastVal = other;
return result;
}
bP.lt = function(other){
var result = lastVal < other;
lastVal = other;
return result;
}
bP['<'] = bP.lt
bP['>'] = bP.gt
nP['<'] = nP.lt
nP['>'] = nP.gt
})()
연결하려는 대상은 무엇입니까? –
'(:)'연산자는 일반적으로 하스켈에서 유일한 중온 연산자가 아니기 때문에 보통 "단항 연산자"라고 불립니다 (예를 들어,'+'는 중절 연산자이기도합니다). – dflemstr