gpt4 book ai didi

scala - 为什么这种结构类型绑定(bind)不能按预期工作?

转载 作者:行者123 更新时间:2023-12-03 18:20:33 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的辅助方法,该方法接收可以关闭的内容和一些接收前者的函数,并确保在执行该函数后关闭“可关闭”。

例如,我想像这样使用它:

  closing(new FileOutputStream("/asda"))(_.write("asas"))

我的意思是
object Helpers {

def closing[T <: { def close }](closeable: T)(action: T => Unit): Unit =
try action apply closeable finally closeable close

}

但是当试图编译这个简单的测试时:
object Test {

import Helpers._

closing(new FileOutputStream("/asda"))(_.write("asas"))

}

编译器提示:

inferred type arguments [java.io.FileOutputStream] do not conform to method closing's type parameter bounds [T <: AnyRef{def close: Unit}]



任何想法为什么?

最佳答案

你需要写

def closing[T <: { def close() }]

在 Scala 中,带空括号的方法和完全不带括号的方法是有区别的。

关于scala - 为什么这种结构类型绑定(bind)不能按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4787449/

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