在Java中,我们可以调用的方法aMethod(val1 , val2)
调用方法空PARAM
与classObject.aMethod(null_if_Val1_NotAvailable,val2)
而且里面的方法我会检查,如果VAL1是空 我会初始化
如何做同样的在Kotlin。 我试过,但它说,空不能为非空型
在Java中,我们可以调用的方法aMethod(val1 , val2)
调用方法空PARAM
与classObject.aMethod(null_if_Val1_NotAvailable,val2)
而且里面的方法我会检查,如果VAL1是空 我会初始化
如何做同样的在Kotlin。 我试过,但它说,空不能为非空型
您可以使用默认值的值:
fun aMethod(val1: String = "default value", val2: String)
现在,您可以使用类似于默认的方法,以便:
classObject.aMethod(val2 = "val2")
或交换'val1'和'val2'所以没有必要使用命名参数。 – glee8e
尝试它这样
fun printHello(name: String?): Unit {
if (name != null)
println("Hello ${name}")
else
println("Hi there!")
// `return Unit` or `return` is optional
}
返回类型作为您的愿望。
参考kotlin langauge function tutorial
?
数据类型允许您有空之后。请参考this link
Kotlin强调零安全性。如果你想要一个属性/返回类型/参数/局部变量为空,你将不得不使用nullable types,通过在类型的末尾附加一个问号。
例如
Foo foo = null // doesn't compile
Foo? foo = null // compiles
fun foo(foo: Foo)
foo(null) // doesn't compile
fun bar(foo: Foo?)
bar(null) // compiles
fun foo(): Foo = null // doesn't compile
fun foo(): Foo? = null // compiles
所以为了使你的代码工作,你需要的是指定功能aMethod
需要一个可空类型:
fun aMethod(val1: SomeType?, val2) {
//...
}
然而,在科特林,它不建议空在这里使用。我们有更好的方式来处理你的情况。根据nhaarman的建议,我们使用默认参数。
fun aMethod(val1: SomeType = someDefaultValue, val2: OtherType) {
//...
}
aMethod(val2 = OtherType())
在科特林语言参考,这显然是涵盖:http://kotlinlang.org/docs/reference/null-safety.html –