如何在 Purescript 的记录数组中查找元素
How to find an element in an array of records in Purescript
各位。
我想在 Purescript 的记录数组中找到一个元素,但由于我不熟悉 Purescripot,所以无法解决。
我有一个包含银行记录的数组 banks
。
这是银行记录的类型。
type Bank = {
id :: Int,
name :: String
}
我想获取 banks
中的一家银行,其 ID 与给定的搜索 ID 相同。
我试过如下:
find (_.id == searchId) banks
但是出现这个错误。
Could not match type
Int
with type
Function
{ id :: t0
| t1
}
请帮我解决这个简单的问题。
表达式 _.id
是一个接受 Bank
和 returns 其 id
的函数(有点过于简单,但现在已经足够好了)。
举例说明:
getId = _.id
bank = { id: 42, name: "my bank" }
getId bank == 42
然后您使用该函数并尝试将其与 searchId
进行比较,我假设它是一个数字。
嗯,您不能将函数与数字进行比较,这就是编译器告诉您的内容:“无法将 Int 类型与 Function 类型相匹配”
函数 find
期望将一个函数作为其第一个参数,该函数采用 Bank
和 returns 和 Boolean
。有很多方法可以生成这样的函数,但最明显的方法是使用 lambda 抽象:
\bank -> bank.id == searchId
因此,将其插入您的代码中:
find (\bank -> bank.id == searchId) banks
您可以像这样更改您的代码。
find(\{id} -> id == searchId) banks
这样就可以得到result对象了
各位。 我想在 Purescript 的记录数组中找到一个元素,但由于我不熟悉 Purescripot,所以无法解决。
我有一个包含银行记录的数组 banks
。
这是银行记录的类型。
type Bank = {
id :: Int,
name :: String
}
我想获取 banks
中的一家银行,其 ID 与给定的搜索 ID 相同。
我试过如下:
find (_.id == searchId) banks
但是出现这个错误。
Could not match type
Int
with type
Function
{ id :: t0
| t1
}
请帮我解决这个简单的问题。
表达式 _.id
是一个接受 Bank
和 returns 其 id
的函数(有点过于简单,但现在已经足够好了)。
举例说明:
getId = _.id
bank = { id: 42, name: "my bank" }
getId bank == 42
然后您使用该函数并尝试将其与 searchId
进行比较,我假设它是一个数字。
嗯,您不能将函数与数字进行比较,这就是编译器告诉您的内容:“无法将 Int 类型与 Function 类型相匹配”
函数 find
期望将一个函数作为其第一个参数,该函数采用 Bank
和 returns 和 Boolean
。有很多方法可以生成这样的函数,但最明显的方法是使用 lambda 抽象:
\bank -> bank.id == searchId
因此,将其插入您的代码中:
find (\bank -> bank.id == searchId) banks
您可以像这样更改您的代码。
find(\{id} -> id == searchId) banks
这样就可以得到result对象了