Scala:具有参数或泛型类型参数的方法 returns 一个 Future
Scala: a method with a parameteric or generic type argument that returns a Future
我的标题可能没有描述我试图理解的问题代码段:
这是一段代码:
def getMeConcurrentInputStream[A, I <: InputStream](in:I)(fn:I => A):Future[A] = {
future {
fn(in)
}andThen {
case all => in.close()
}
}
我想了解这个函数的作用。这是什么:
[A, I <: InputStream](in:I)(fn:I => A)
这是什么:(in:I)(fn:I => A)
并且该函数正在返回 Future?我将如何解读:Future[A]
我如何解释以上所有内容?我将如何通过从代码中的其他地方调用它来使用这个函数?
def getMeConcurrentInputStream
名为 getMeConcurrentInputStream
的函数
[A, I <: InputStream]
具有通用类型 A
和类型 I
的 InputStream
或其子类。
(in:I)(fn:I => A)
带有一个 I
的参数列表和一个接受 I
并返回 A
的函数的参数列表
:Future[A] = {
返回 Future
类型 A
future {
在范围内隐式 ExecutionContext
中创建一个 Future
fn(in)
并且 future 使用参数 in
.
调用函数 fn
}andThen {
后记,无论成功还是失败,
case all =>
在所有情况下
in.close()
在 in
上致电 .close()
。
此函数将一些涉及 InputStream
的操作包装在 Future
中,并在完成后将其关闭。
例如,假设我想异步读取文件的第一个字节,然后打印出来。我可以这样做:
val fileInputStream = new FileInputStream("example.txt")
val myFuture = getMeConcurrentInputStream(fileInputStream) { inputStream =>
inputStream.read()
}
myFuture.map(println)
就我个人而言,我看不出此功能有多大用处,但就这样吧。
我的标题可能没有描述我试图理解的问题代码段:
这是一段代码:
def getMeConcurrentInputStream[A, I <: InputStream](in:I)(fn:I => A):Future[A] = {
future {
fn(in)
}andThen {
case all => in.close()
}
}
我想了解这个函数的作用。这是什么:
[A, I <: InputStream](in:I)(fn:I => A)
这是什么:(in:I)(fn:I => A)
并且该函数正在返回 Future?我将如何解读:Future[A]
我如何解释以上所有内容?我将如何通过从代码中的其他地方调用它来使用这个函数?
def getMeConcurrentInputStream
名为 getMeConcurrentInputStream
[A, I <: InputStream]
具有通用类型 A
和类型 I
的 InputStream
或其子类。
(in:I)(fn:I => A)
带有一个 I
的参数列表和一个接受 I
并返回 A
:Future[A] = {
返回 Future
类型 A
future {
在范围内隐式 ExecutionContext
Future
fn(in)
并且 future 使用参数 in
.
fn
}andThen {
后记,无论成功还是失败,
case all =>
在所有情况下
in.close()
在 in
上致电 .close()
。
此函数将一些涉及 InputStream
的操作包装在 Future
中,并在完成后将其关闭。
例如,假设我想异步读取文件的第一个字节,然后打印出来。我可以这样做:
val fileInputStream = new FileInputStream("example.txt")
val myFuture = getMeConcurrentInputStream(fileInputStream) { inputStream =>
inputStream.read()
}
myFuture.map(println)
就我个人而言,我看不出此功能有多大用处,但就这样吧。