【发布时间】:2015-06-23 22:04:00
【问题描述】:
trait LowPriorityOrderingImplicits {
implicit def ordered[A <: Ordered[A]]: Ordering[A] = new Ordering[A] {
def compare(x: A, y: A) = x.compare(y)
}
}
上面的代码是做什么的?
- A <: ordered a>
- “new Ordering[A]{...”究竟是做什么的?它是否为 Ordering[A] 创建了一个新的匿名类?
另外,对于这段代码(取自DataStax Cassandra Connector)
object TableWriter{
def apply[T : RowWriterFactory](
connector: CassandraConnector,
keyspaceName: String,
tableName: String,
columnNames: ColumnSelector,
writeConf: WriteConf): TableWriter[T] = {
...//some code
val rowWriter = implicitly[RowWriterFactory[T]].rowWriter(tableDef, selectedColumns)
new TableWriter[T](connector, tableDef, rowWriter, writeConf)
}
}
val writer = TableWriter(connector, keyspaceName, tableName, columns, writeConf) // first call
def saveToCassandra(keyspaceName: String,
tableName: String,
columns: ColumnSelector = AllColumns,
writeConf: WriteConf = WriteConf.fromSparkConf(sparkContext.getConf))
(implicit connector: CassandraConnector = CassandraConnector(sparkContext.getConf),
rwf: RowWriterFactory[T]): Unit = {
val writer = TableWriter(connector, keyspaceName, tableName, columns, writeConf)// 2nd call
}
- 如何推断 T 的类型?
- rwf 隐式参数的目的是什么?
- 第一次和第二次调用 TableWriter 有什么区别?
【问题讨论】:
标签: scala