gpt4 book ai didi

scala - 通用流/阅读器复制

转载 作者:行者123 更新时间:2023-12-05 02:23:55 27 4
gpt4 key购买 nike

使用流,我编写了以下函数,将 InputStream 的内容复制到 OutputStream:

def copy(input: InputStream, output: OutputStream, chunk: Int = 2048) {
val buffer = Array.ofDim[Byte](chunk)
var count = -1

while({count = input.read(buffer); count > 0})
output.write(buffer, 0, count)
}

编写相同的函数以将 Reader 的内容复制到 Writer 会产生极其相似的代码 - 唯一的区别是 Array .

我正在尝试,但到目前为止还无法推广我的copy 方法。

我想我记得在某处读过,我可以通过它支持的方法来描述一个类型——接受任何支持 read(buffer: Array[Byte]) 的类型,比如说。不过我可能已经编好了,因为我再也找不到了。

我还想传递一个隐式帮助对象,有点像各种集合的 sorted 方法的 Ordering,但我的大脑遇到了障碍。

如能提供正确方向的任何帮助或指示,我们将不胜感激。

最佳答案

是的,你想要一个 structured type .请注意,这将利用运行时反射。这应该不会对性能造成明显影响,因为您可能会在此函数中执行 I/O,但仅供引用。

def copy(input: { def read(buffer: Array[Byte]):Int }, ...

关于scala - 通用流/阅读器复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031604/

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