2017-06-05 49 views
1

在Java中,我们可以调用的方法aMethod(val1 , val2)调用方法空PARAM

classObject.aMethod(null_if_Val1_NotAvailable,val2) 而且里面的方法我会检查,如果VAL1是空 我会初始化

如何做同样的在Kotlin。 我试过,但它说,空不能为非空型

+0

在科特林语言参考,这显然是涵盖:http://kotlinlang.org/docs/reference/null-safety.html –

回答

3

您可以使用默认值的值:

fun aMethod(val1: String = "default value", val2: String) 

现在,您可以使用类似于默认的方法,以便:

classObject.aMethod(val2 = "val2") 
+0

或交换'val1'和'val2'所以没有必要使用命名参数。 – glee8e

3

尝试它这样

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

1

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())