我试图创建一个接受任何类型对象的闭包,将其变异后给出另一种对象。我这样尝试过
fun bar(fooFn: (Any?)->Any?): String {
return fooFn(3) as String
}
val foo = { test: Int -> "Just Testing $test" }
fun main() {
// I'm expecting this to print "Just Testing 3"
println(bar(foo))
}
但是这会导致类型不匹配错误,并且无法编译。 如何实现呢?
答案 0 :(得分:0)
问题出在test: Int
中的foo
:
val foo = { test: Int -> "Just Testing $test" }
foo
要求test
是Int
。如果使用类型为foo
的参数调用Any?
,则该参数可能为null或类似String
的类型。但这行不通。因此,如果您将其声明为test: Any?
,则代码将编译。