gpt4 book ai didi

kotlin - 如何强制调用某些构造函数/函数以使用命名参数?

转载 作者:IT老高 更新时间:2023-10-28 13:29:57 24 4
gpt4 key购买 nike

我有一些构造函数和函数,我希望始终使用命名参数调用它们。有没有办法要求这个?

我希望能够为具有许多参数的构造函数和函数以及在使用命名参数时读取更清晰的构造函数和函数执行此操作,等等。

最佳答案

在 Kotlin 1.0 中,您可以使用 Nothing 来执行此操作来自标准库。

在 Kotlin 1.1+ 中,您将获得“Forbidden vararg parameter type: Nothing”,但您可以通过使用私有(private)构造函数(如 Nothing)定义自己的空类并将其用作第一个 varargs 参数来复制此模式。

/* requires passing all arguments by name */
fun f0(vararg nothings: Nothing, arg0: Int, arg1: Int, arg2: Int) {}
f0(arg0 = 0, arg1 = 1, arg2 = 2) // compiles with named arguments
//f0(0, 1, 2) // doesn't compile without each required named argument

/* requires passing some arguments by name */
fun f1(arg0: Int, vararg nothings: Nothing, arg1: Int, arg2: Int) {}
f1(arg0 = 0, arg1 = 1, arg2 = 2) // compiles with named arguments
f1(0, arg1 = 1, arg2 = 2) // compiles without optional named argument
//f1(0, 1, arg2 = 2) // doesn't compile without each required named argument

作为 Array<Nothing>在 Kotlin 中是非法的,vararg nothings: Nothing 的值无法创建以传入(我想缺少反射)。不过,这似乎有点小题大做,我怀疑 Nothing 类型的空数组的字节码中存在一些开销。但它似乎有效。

此方法不适用于无法使用 vararg 的数据类主构造函数但这些可以标记为private和辅助构造函数可以与 vararg nothings: Nothing 一起使用.

关于kotlin - 如何强制调用某些构造函数/函数以使用命名参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37394266/

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