gpt4 book ai didi

constructor - 辅助 kotlin 构造函数变量是如何传入的?

转载 作者:行者123 更新时间:2023-12-02 13:06:37 29 4
gpt4 key购买 nike

我正在寻找 Kotlingigasecond 练习的解决方案:http://exercism.io/exercises/kotlin/gigasecond/readme 。我可以理解它如何需要两个两个构造函数,因为在创建类时传入了 LocalDateLocalDateTime 参数。我不明白的是下面的辅助类构造函数变量是如何传入类中并在类中使用的。似乎计算仅在传入 LocalDateTime 参数时发生,因为计算仅使用 dobWithTime 完成。这里发生了什么魔法?

data class Gigasecond(val dobWithTime: LocalDateTime) {
constructor(dateOfBirth: LocalDate) : this(dateOfBirth.atStartOfDay())

val date: LocalDateTime = dobWithTime.plusSeconds(1000000000)
}

最佳答案

辅助构造函数只是使用 : this() 语法将调用转发给主构造函数,同时从 LocalDate 创建所需的 LocalDateTime 对象> 它作为参数接收的。

您可以将辅助构造函数视为执行以下操作的函数:

fun createGigaSecond(dateOfBirth: LocalDate): Gigasecond {
return Gigasecond(dateOfBirth.atStartOfDay())
}

除非它使用常用的构造函数语法,因此可以将其称为 Gigasecond(dataOfBirth) 而不是 createGigaSecond(dateOfBirth)


来自官方文档关于secondary constructors :

If the class has a primary constructor, each secondary constructor needs to delegate to the primary constructor, either directly or indirectly through another secondary constructor(s). Delegation to another constructor of the same class is done using the this keyword.

这就是这里发生的事情。

关于constructor - 辅助 kotlin 构造函数变量是如何传入的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48717599/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com