我正在努力把Kotlin中的Function Literals包裹起来,并且遇到了一些我不了解的行为。
以下代码(使用JodaTime)将产生2017-11-24T00:00:00.000Z'的预期结果
val dateTime = DateTime()
val withTimeAtStartOfDay = dateTime
.minusYears(1)
.withTimeAtStartOfDay()
println(withTimeAtStartOfDay.toString())
为了尝试在DSL中复制它,我创建了以下功能
inline fun createUtcDate(block: DateTime.() -> DateTime): String {
val dateTime = DateTime()
return dateTime.block().toString()
}
使用以下代码调用此函数将产生“ 2018-11-24T00:00:00.000Z”的结果,如您所见,其中仅应用对withTimeAtStartOfDay()
的调用。
val utcDate = createUtcDate {
minusYears(1)
withTimeAtStartOfDay()
}
println(utcDate)
我假设这与对DateTime对象的方法调用的链接有关,但不了解问题所在。有人可以帮忙吗?
答案 0 :(得分:0)
我认为您的原始图片更清晰易读。而且,如果您一个月后回来,则可以添加另一行而不必担心。为此,您需要做的是:
inline fun createUtcDate(block: DateTime.() -> Unit): String {
val dateTime = DateTime()
dateTime.apply(block)
return dateTime.toString()
}