如何在Purescript中的记录数组中查找元素

问题描述 投票:0回答:2

每个人。我想在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
      }

请帮助我解决这个简单的问题。

purescript
2个回答
1
投票

表达式_.id是一个接受Bank并返回其id的函数(有点过分简化,但现在足够好了。)

以说明:

getId = _.id
bank = { id: 42, name: "my bank" }
getId bank == 42

然后您采用该功能,并尝试将其与searchId(我假设是一个数字)进行比较。

嗯,您不能将函数与数字进行比较,而这就是编译器告诉您的:“函数find期望获得一个接受Bank并返回Boolean的函数作为其第一个参数。产生这种功能的方法有很多,但是最明显的是使用lambda抽象:

\bank -> bank.id == searchId

因此,将其插入您的代码:

find (\bank -> bank.id == searchId) banks

您可以这样更改代码。

find(\{id} -> id == searchId) banks

所以您可以获得结果对象。

1
投票
您可以这样更改代码。
© www.soinside.com 2019 - 2024. All rights reserved.