compose 和 reduce 的 Ramda 错误 > 无法读取未定义的 属性 '@@transducer/step'
Ramda error with compose and reduce > Cannot read property '@@transducer/step' of undefined
我在使用 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')
)
我有错误 "Cannot read property '@@transducer/step' of undefined"。
我不明白为什么。
你有想法吗?
弗雷德里克
这仅仅是因为您在定义它之前试图使用 sum_value
。当您引入 lambda 表达式 values => R.reduce(sum_value, 0)(values)
时,您将 sum_values
的计算延迟到您定义它之后,一切正常。
如果您要将 sum_value
的定义移动到 total_bad
之上(或者类似地,如果它是函数声明或 var
语句,因此会被提升)那么这只会工作。
您可以在 the REPL.
中查看更新版本
我在使用 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')
)
我有错误 "Cannot read property '@@transducer/step' of undefined"。
我不明白为什么。
你有想法吗?
弗雷德里克
这仅仅是因为您在定义它之前试图使用 sum_value
。当您引入 lambda 表达式 values => R.reduce(sum_value, 0)(values)
时,您将 sum_values
的计算延迟到您定义它之后,一切正常。
如果您要将 sum_value
的定义移动到 total_bad
之上(或者类似地,如果它是函数声明或 var
语句,因此会被提升)那么这只会工作。
您可以在 the REPL.
中查看更新版本