【发布时间】:2018-07-14 00:08:47
【问题描述】:
我有 A 类型的类,它有构造函数,需要参数 x 并有一些可选参数:
class A(x: String, y: String = "default_y")
现在我想用必需的参数来引用构造函数:
var function: (String) -> A = ::A
现在我遇到了类型不兼容的问题,因为该构造函数的签名是 2 个字符串,而不仅仅是一个。
当我添加这个构造函数重载时,编译器停止抱怨:
class A(x: String, y: String = "default_y") {
constructor(x: String): this(x, "default_y")
}
//added just so you can see full code
var function: (String) -> A = ::A
我现在得到了一点冗余。我当然可以对此做一些事情(将"default_y" 提取为常量或从主构造函数中删除默认参数)以消除冗余,但这只是糖代码,并没有真正做任何事情。只是允许我参考它而不抱怨。
有没有办法将构造函数(也可能是函数)作为只有必需参数的函数来引用?
【问题讨论】:
标签: lambda constructor kotlin