我在尝试编写一个返回Future[Map[Int,Long]]的方法时遇到了问题。
我正处于找回未来的反复过程中..]].所以我尝试了平面地图身份。
请参阅下面的代码和我现在收到的错误消息。我不确定目前这里发生了什么。
def aggregate(permissions: Vector[Permission]): Map[Int, Long]
def calculate(roleProfile: RoleProfile): Future[Map[Int, Long]] = {
val roleIds = roleProfile.roles.map(r => r.id)
db.run(permissionDao.getByRoles(roleIds.toList)).map {
permissions =>
aggregate(permissions)
}
}
def generate(roleGroupId: Int): Future[Map[Int, Long]] = {
for {
roleGroup <- roleGroupService.getById(roleGroupId)
roles <- roleGroupService.getRolesByGroupId(roleGroupId)
} yield {
calculate(RoleProfile(roleGroup.get.id, roles.toSet)) //flatMap identity
}
}
我收到方法“calculate”的错误消息:
type mismatch;
[error] found : scala.concurrent.Future[Map[Int,Long]]
[error] required: Map[Int,Long]
[error] calculate(RoleProfile(roleGroup.get.id, roles.toSet)) //flatMap identity
现在,如果删除注释的平面图身份,我得到这个错误:
type mismatch;
[error] found : Map[Int,Long] => Map[Int,Long]
[error] required: Map[Int,Long] => scala.concurrent.Future[?]
[error] calculate(RoleProfile(roleGroup.get.id, roles.toSet)) flatMap identity
我很困惑,我怎样才能让它返回Future[Map[Int,Long]]。
更重要的是,这里发生了什么,我似乎不明白。如果你能很感激的话,请把事情分解一下。
由于计算
,就像你的getById
等调用一样,返回一个未来
,你应该能够简单地将其添加到理解的主要部分,例如:
def generate(roleGroupId: Int): Future[Map[Int, Long]] = {
for {
roleGroup <- roleGroupService.getById(roleGroupId)
roles <- roleGroupService.getRolesByGroupId(roleGroupId)
profile <- calculate(RoleProfile(roleGroup.get.id, roles.toSet))
} yield { profile }
}
1.首先,我想确认一下从编程的角度,我们有“静态类型检查”和“动态类型检查,对把? 2.一般情况下我们用typescript做静态类型检查,检查源码里面自定义数据类型,对把? 3.那么,我们做的所谓的动态类型检查是不是指的那些库,比如Joi,ajv什么的,比如你点击一个按钮,然后调这个库来检查一个obj的schema,如果类面的key value类型都能对的上,我们就通过,如果类型对不上,我们就报
因此,将此运算符放在链中的任何位置也会影响onnext/onerror/oncomplete信号的执行*上下文,从链的开始直到下一次出现{@link publishOn(Scheduler)publishOn} 这让我有点困惑,因为当处理链中没有指定任何时,线程名称的打印值为: 从线程single-scheduler-1中保存person-如预期 从线程线程-13查找人员 从线程线程-6查找人员
错误:线程“main”在调用<code>Result::unwrap()
我试图在Redis上执行Spring中的函数。这让我犯了个错误。我已经成功实现了函数,但在实现时,它要求我将集合作为第二个参数。我不知道该进什么?有人能带我来吗。 这是我的multiGet()代码 方法定义: 控制器中的代码: 上面的Multiget方法的错误是 下面是Get函数的代码。 控制器中Get函数的代码:
ChatGPT 的出现在许多领域都带来了各种机遇。以下是其中几个重要的机遇
chatGPT是否取代人工的神器,1.挑战我们的工作岗位,2.挑战我们的教育,3.挑战我们人类的尊严,4.AIGC领域如何监管?,5.数据隐私和安全,6.技术依赖性