【发布时间】:2021-01-24 14:08:39
【问题描述】:
我想在我的函数中传递一个使用 LocalTime 数据的可选参数。但是 LocalTime 只接受格式化的值。如何将空值或默认值传递给它?
data class OpeningHours(
var startServiceHours: LocalTime,
var finalServiceHours: LocalTime,
var inconvenienceStartTime: LocalTime?,
var inconvenienceFinalTime: LocalTime?
) {
fun contains(time: LocalTime): Boolean {
return if (startServiceHours.isAfter(finalServiceHours))
(time.isAfter(startServiceHours) || time.isBefore(finalServiceHours)) &&
containsInconvenience(time)
else
(time.isAfter(startServiceHours) && time.isBefore(finalServiceHours)) &&
(time.isBefore(inconvenienceFinalTime) && time.isBefore(inconvenienceStartTime))
}
private fun containsInconvenience(time: LocalTime): Boolean {
return if (inconvenienceFinalTime?.isAfter(inconvenienceStartTime)!!)
time.isAfter(inconvenienceFinalTime) || time.isBefore(inconvenienceStartTime)
else
time.isAfter(inconvenienceFinalTime) && time.isBefore(inconvenienceStartTime)
}
}
例如,我不能使用“00:00:00”默认值,因为我需要每个日期。必须是字面上的默认值。
【问题讨论】:
-
您可以使用 (time: LocalTime?) 并在方法内部添加这一行:val currentTime = time ?: LocalTime(),然后使用 currentTime 代替 time
-
如果您没有要传递的内容,您可以将参数设为默认值,例如
fun contains(time: LocalTime = LocalTime.MIN): Boolean。然后你可以在没有参数的情况下调用方法。
标签: android android-studio datetime kotlin localtime