首页 文章

如何将构造时代码混合到Scala中具有特征的类中?

提问于
浏览
0

我希望所有扩展特征的类都存储他们的创建时间(作为 org.joda.time.DateTime 实例) . 该特征将 def dt : DateTime 定义为吸气剂 . 我是否还可以定义代码以获取特征中的时间戳(打算在构建时运行)?

更新:我想我已经想到如何在不处理构造函数的情况下实现特定任务(只需将 dt 定义为val并将其设置为新的DateTime,也许这会起作用),但 Headers 中的问题仍然很有趣 .

2 回答

  • 0

    只需替换 def currentTime 的实现即可生成 org.joda.time.DateTime 实例,并将该特征混合到任何类中 .

    trait Timestamp {
      private def currentTime = {
        import java.util.Calendar._
    
        val calendar = getInstance
    
        def hours = calendar.get(HOUR_OF_DAY)
        def minutes = calendar.get(MINUTE)
        def seconds = calendar.get(SECOND)
        def milliseconds = calendar.get(MILLISECOND)
    
        hours + ":" + minutes + ":" + seconds + ":" + milliseconds
      }
    
      final val creationTime = currentTime
    }
    
  • 1

    您无法通过特征添加构造函数 .

相关问题