2017-12-06 8 views
0

나머지 연산자를 사용하여 R.merge를 사용할 때의 이점이 있습니까?R.merge와 나머지 연산자를 구별하는 데있어 다른 점이 있습니까?

const a = {name: 'john', job: 'developer'}; 
const b = {name: 'peter', commute: 'bike', address: {city: 'San Francisco'}}; 
const c = {...a, ...b}; 
console.log('rest', c); 
const d = R.merge(a, b); 
console.log('R.merge', d); 

c 및 d는 동일하게 보입니다.

R.merge가 작동하는 동안 나머지 작업자가 작동하지 않는 경우가 있습니까?

답변

2

R.merge의 현재 구현은 실제로는 R.curry((l, r) => Object.assign({}, l, r)) (필요한 경우 polyfilled)이므로 완전히 적용하면 나머지 연산자와 동일하게 작동합니다.

R.merge이 부분적으로 적용되는 주된 차이점이 있습니다. 나머지 연산자 (또는 Object.assign)를 사용할 수없는 환경에서 작동 할 때도 유용합니다.

부분 적용을 필요로하지 않고 나머지 연산자를 기본적으로 사용할 수있는 경우 R.merge(a, b){...a, ...b} 이상 사용하면 거의 이점이 없습니다.

1

Scott Christopher의 답변 (물론 정확하고 관련성이있는 답변)뿐만 아니라 두 가지가 다른 또 다른 방법이 있습니다. merge기능입니다. {...a, ...b}표현식은입니다.

Javascript의 중요한 기능 중 하나는 함수가 일급 시민이므로 함수에 전달하고 함수에서 반환 할 수 있다는 것입니다. 변수의 값 또는 오브젝트의 특성이 될 수 있습니다. 표현에 대해서도 마찬가지입니다. 그래서 진정한 동등성을 가지고, 그 스콧은 설명 R.merge의 카레 본질을 포착하지 않는 한

merge 

사이

(a, b) => {...a, ...b} 

그리고 심지어는 것이다.

물론 이것은 일회용 표현의 경우에는 차이가 없지만이 함수를 전달할 때 merge은 더 명확하게 읽을 수 있습니다.