在Kotlin中增加可空Int的最简单,最易读的方法是什么?还有其他方法吗?
var myInt: Int? = 3
myInt = if(myInt!=null) myInt+1 else null
如果myInt是简单的变量,那么这很好,但是当myInt表达更长时,它会变长很长。
答案 0 :(得分:10)
您可以以可调用的方式调用运算符:
myInt = myInt?.inc()
请注意,inc()
运算符不会改变其接收者的值,但会创建一个新值。这意味着以下声明不会更改myInt
:
val myInt: Int? = null
myInt?.inc() // myInt still being null
都不是:
val myInt: Int? = 5
myInt?.inc() // myInt still being 5
答案 1 :(得分:1)
其他答案提供了更短的替代方案,我将介绍如何正确使用基本的if-construct:
$product = new NTLMSoapClient(PRODUCT_URL);
/*$params_d = array('filter' => array(
),
'setSize' => 2);*/
$result = $product->ReadMultiple();
$productData = $result->ReadMultiple_Result->WebItems;
它与Java非常相似,您不必添加任何新的复杂功能。
答案 2 :(得分:0)
使用inc
。在Kotlin中,所有运算符都转换为方法调用。有关详细信息,请参阅here。
var myInt: Int? = 3
myInt = myInt?.inc()
答案 3 :(得分:0)
var myInt: Int? = 3
myInt = myInt?.inc()
请注意,我已将inc()
返回的值分配给myInt
,因为documentation说明了以下内容:
inc()和dec()函数必须返回一个值,该值将分配给使用++或 - 操作的变量。他们不应该改变调用inc或dec的对象。
答案 4 :(得分:0)
最佳解决方案是crgarridos'一个。
如果您想通过其他值增加,可以使用以下选项:
var myInt: Int? = 1
val n = myInt?.plus(1)
println(n)
打印:
2