【发布时间】:2017-07-08 14:24:52
【问题描述】:
我是 scala 的新手,我有一个通常只需要使用非默认值初始化少数变量(有时不需要)的类。最初我使用构建器类来执行此操作,但后来意识到在构造函数中使用 scala 的默认值会更好。问题是一些默认值比String = "name" 或Int = 1 等要复杂一些,并且需要实际的代码,比如
val name: String = "Party-" + LocalDateTime.now.atZone(ZoneId.systemDefault()).toEpochSecond
好的,这看起来很糟糕,但它会满足该变量的唯一名称要求并且它可以工作。
我还有其他变量需要格式化日期,并且默认值需要从今天开始,这将满足:
private val now: LocalDateTime = LocalDateTime.now()
private val dateFormat: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
private var startDate = dateFormat.format(now)
private var startHour = now.getHour
所以很明显我不能使用所有代码作为我不能对这两个变量使用一行,因为它们共享一个先前初始化的变量,所以我应该如何实施?startDate的默认值
谢谢!
【问题讨论】:
-
您的问题不清楚。您说“显然我不能将所有代码用作
startDate的默认值”,但这一点也不明显。我猜这是作业,并且有一些限制说您不允许使用复合表达式来初始化变量?还是您的公司风格指南禁止这样做?无论哪种方式,您都需要在问题中告诉我们这些限制是什么确切,因为它们绝不是“显而易见的”。 -
很公平,我更新了我的问题。当然可以使用复合表达式,正如我上面所说的使用不同的变量,我只是觉得可能有更好的方法来做到这一点,因为如果我不能,那么我不得不使用构建器,因为单个变量。
标签: scala default-value