gpt4 book ai didi

scala - 参数类型为 "T=",什么意思

转载 作者:行者123 更新时间:2023-12-01 16:27:39 24 4
gpt4 key购买 nike

在spark JdbcRDD scala中,有以下代码。它有一个像

这样的参数
mapRow: (ResultSet) => T = JdbcRDD.resultSetToObjectArray _

该参数中“T=”的含义是什么?为什么不只是

mapRow: (ResultSet) => JdbcRDD.resultSetToObjectArray _

代码是:

class JdbcRDD[T: ClassTag](
sc: SparkContext,
getConnection: () => Connection,
sql: String,
lowerBound: Long,
upperBound: Long,
numPartitions: Int,
mapRow: (ResultSet) => T = JdbcRDD.resultSetToObjectArray _)

object JdbcRDD {
def resultSetToObjectArray(rs: ResultSet) = {
Array.tabulate[Object](rs.getMetaData.getColumnCount)(i => rs.getObject(i + 1))
}
}

最佳答案

整个(ResultSet) => T部分是参数的类型。这意味着mapRow参数是一个从ResultSetT的函数。

在您的示例中,它是一个具有默认值的参数,类似于

def foo(justAnInt : Int = 4) = ???

即参数列表中=后面的部分。

因此,您会得到parameterName : type = defaultVal,您可能会注意到,它是直接的:

mapRow : (ResultSet) => T = ...

简单来说,参数是一个从 ResultSetT 的函数,默认值是 JdbcRDD.resultSetToObjectArray 方法转换为函数(因此尾随下划线)。

关于scala - 参数类型为 "T=",什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23517865/

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