首页 > 解决方案 > 什么是 ev.R 型?

问题描述

我有一个 ResultSet,我从中获取com.datastax.driver.core.ResultSetExecutionInfo,从 executionInfo 中提取 queryTrace,您可以看到以下代码。

resultSet.getAllExecutionInfo.forEach { exeInfo: ExecutionInfo =>
        val queryTimeTaken: FiniteDuration = exeInfo.getQueryTrace.getDurationMicros.microsecond  //this works fine if i do getDurationMicros microsecond it return ev.R
        exeInfo.getQueryTrace.getEvents.forEach { event =>
          if (queryTimeTaken > timeTakenLimit) {
            TraceLogger.info {
              s"DateTime = ${sdf.format {event.getTimestamp}} Description = ${event.getDescription}  " +
                s"TimeElapsedMicro = ${event.getSourceElapsedMicros} Statement = ${exeInfo.getStatement}" +
                s" TimeTaken =$queryTimeTaken"
            }
          }
        }
      }

在代码的第二行中

val queryTimeTaken:FiniteDuration=exeInfo.getQueryTrace.getDurationMicros.microsecond

当我这样做时getDurationMicros.microsecond,它会返回 FiniteDuration 的对象,但如果我这样做getDurationMicros microsecond,则返回ev.R类型,有人可以解释一下为什么它会重新设置这种类型。这两行的空间有什么不同?

它与后缀表达式评估有关吗?

编辑一:

def a = 500
val x: FiniteDuration = a.microsecond // this works fine
val y: FiniteDuration = 500 microsecond

def a = 500
val x: ev.R = a.microsecond() // this gives ev.R
val y: FiniteDuration = 500 microsecond

def a = 500
val x: FiniteDuration  = a microsecond // this works fine
val y: FiniteDuration = 500 microsecond

标签: scalatypesexpressiondatastaxdatastax-java-driver

解决方案


推荐阅读