gpt4 book ai didi

javascript - 使用 Lodash 编写一个返回函数的函数,该函数在其中使用函数

转载 作者:行者123 更新时间:2023-11-29 23:07:48 24 4
gpt4 key购买 nike

只是我开始慢慢熟悉 FP,使用普通的 Lodash。

我正在尝试创建一个 isCode 函数,它将在以下情况下返回 true:

const code = 'EAI_AGAIN'
const error = {code: 'EAI_AGAIN'}

isCode(code)(error)

目前这有效:

const getCode = partial(get, _, 'code')

const isCode = function(string) {
return function(object) {
return equal(string, getCode(object))
}
}

还有这个:

const isCode = string => flow(getCode, partial(equal, string))

但我想知道它看起来像“更深一层”/“无点(?)”。


我试过各种方法,都没有成功:

const isCode = curry(equal, _, partial(getCode))

const isCode = curry(partial(equal, _), partial(getCode, _))

const isCode = partial(curry, equal, partial(getCode))

这主要是在黑暗中拍摄的,因为我无法弄清楚要搜索的正确术语是什么,而且我发现的“FP 介绍”中没有一个像这样深入 - 看起来。

最佳答案

_.isEqual() 方法需要两个值,并且不会调用函数,因此当您柯里化(Currying)它时,它会将函数与字符串进行比较,并且不会尝试提取来自对象的值。

_.flow() 语句足够无意义,而且可读性更好:

const isCode = string => flow(getCode, partial(equal, string))

另一种选择是部分应用matchesProperty:

const { matchesProperty, partial } = _

const code = 'EAI_AGAIN'
const error = {code: 'EAI_AGAIN'}

const isCode = partial(matchesProperty, 'code')

const result = isCode(code)(error)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

你也应该尝试 lodash/fp ,因为在 fp 版本中,所有方法都是柯里化(Currying)的,具有固定的数量,并且顺序正确:

const { matchesProperty } = _

const code = 'EAI_AGAIN'
const error = {code: 'EAI_AGAIN'}

const isCode = matchesProperty('code')

const result = isCode(code)(error)

console.log(result)
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>

关于javascript - 使用 Lodash 编写一个返回函数的函数,该函数在其中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com