2016-10-05 2 views
2

의 '@@ 변환기/단계를'속성을 읽을 수 없습니다> 감소 :Ramda 오류 및 Ramda와 나는 (나를 위해) 이상한 오류가 정의되지 않은

나는 조성에 사용하는 경우 :

const total_ok = R.compose(
    values => R.reduce(sum_value, 0)(values), 
    R.prop('items') 
) 

모두 정상적으로 작동합니다.

하지만 난 그런 식으로 리팩토링 경우 :

const total_bad = R.compose(
    R.reduce(sum_value, 0), 
    R.prop('items') 
) 

나는 "정의의 '@@ 변환기/단계를'속성을 읽을 수 없습니다"라는 오류가 있습니다.

이유를 모르겠다.

당신은 여기에 코드를 테스트 할 수 있습니다

http://ramdajs.com/repl/#?code=const%20total_ok%20%3D%20R.compose%28%0A%20%20values%20%3D%3E%20R.reduce%28sum_value%2C%200%29%28values%29%2C%0A%20%20R.prop%28%27items%27%29%0A%29%0A%0Aconst%20total_bad%20%3D%20R.compose%28%0A%20%20R.reduce%28sum_value%2C%200%29%2C%0A%20%20R.prop%28%27items%27%29%0A%29%0A%0Aconst%20sum_value%20%3D%20%28duration%2C%20item%29%20%3D%3E%20%7B%0A%20%20return%20duration%20%2B%20item.value%3B%0A%7D%3B%0A%0A%0Alet%20data%20%3D%20%7B%0A%20%20items%3A%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20value%3A%201%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20value%3A%202%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20value%3A%203%0A%20%20%20%20%7D%0A%20%20%5D%0A%7D%0A%0Aconsole.log%28%22total%28data%29%3A%20%22%2Btotal_ok%28data%29%29%3B%0Aconsole.log%28%22total%28data%29%3A%20%22%2Btotal_bad%28data%29%29%3B는 생각이 있나요?

프레데릭

답변

2

당신은 당신이 그것을 정의하기 전에 sum_value를 사용하려고하고 있기 때문에 이것은 단순히이다. 람다 표현식 인 values => R.reduce(sum_value, 0)(values)을 도입하면 정의한 후에야 sum_values의 평가가 지연되고 모든 것이 작동합니다.

total_bad 이상의 정의를 이동하려는 경우 (또는 함수 선언 또는 var 문과 유사하므로 끌어 올린 경우와 비슷하게)이 작업이 올바르게 작동합니다.

the REPL에서 업데이트 된 버전을 확인할 수 있습니다.

+0

감사합니다! 너무 간단해서, 나는 혼란 스럽다 ;-) –