正确指定依赖于路径的类型注释

我在玩与路径相关的类型,并且对一个简单的情况感到困惑,在这种情况下,类型推断无法帮助我,而且我不知道应该如何手动指定类型

final class Dependency[A]() {
  final case class Box protected[Dependency] (data : A)
  def box(data : A) : Box = Box(data)
  def unbox(box : Box) : A = box.data
}

def correct() {
  val dep = new Dependency[Int]
  val u = dep.box(0)
  val v = dep.unbox(u)
}

object InCorrect {
  def wrap(src : Int) = { // what return type should be here?
    val dep = new Dependency[Int]
    val box = dep.box(src)
    (dep, box)
  }
  def unwrap() {
    val (dep,box) = wrap(0)
    val v = dep.unbox(box) //type mismatch found
  }
}

我只是将一个函数一分为二,并且两次调用之间的类型信息丢失了。如何重新建立?

至于返回类型:

def wrap(src: Int): (Dependency[Int], Dependency[Int]#Box) = {
  val dep = new Dependency[Int]
  val box = dep.box(src)
  (dep, box)
}

至于从元组获取值:

def unwrap() = {
  val x = wrap(20)

  val (dep, _) = x
  val (_, box: dep.Box) = x

  val v = dep.unbox(box)
  v
}

因此,此解决方法会拉出第一个值,并在类型说明中使用其类型来获取第二个值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从依赖于路径的类型混合中访问值

如何在Scala中将依赖于路径的类型与类型类一起使用

使用'type'关键字和依赖于路径的类型覆盖类型

Scala类型投影:在依赖于路径的特征中拾取对象

Scala:在隐式参数中抽象依赖于路径的类型

类型别名如何使用来指定依赖于模板参数的模板模板参数?

如何指定依赖于单独类型的闭包借用绑定的生存期?

朱莉娅:如何正确定义使用依赖于数字的类型的函数?

使用依赖于lambda函数的类型作为返回类型

测试依赖于类路径上类的存在的代码

如何使 Makefile 文件目标依赖于不同的路径?

如何指定依赖于 dplyr 中的分组变量的条件?

添加类型信息而不依赖于键入模块

使文字常量的类型依赖于其他变量

依赖于特定类类型的C ++模板方法?

C ++:依赖于平台的类型-最佳模式

Typeorm 列类型依赖于数据库

Scapy - 添加类型依赖于其他字段的字段

文件类型依赖于文件扩展名吗?

图片依赖于链接

Symfony / Doctrine:实体“模式”注释不依赖于环境吗?

在指定目录中查找依赖于指定库的所有可执行文件

如果仅依赖于其自身的模板参数,该函数类型是否依赖?

类型属性依赖于另一个属性的返回类型

如何返回包含/依赖于Observable <B>类型的Observable的Observable <A>类型的Observable?

Visual Studio 如何设置依赖于程序集版本的输出路径

具有依赖于Java中未指定类的功能

Python:如何从依赖于模块的另一个文件中正确导入函数

编写具有依赖于继承成员的函数的基类的正确方法