Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 在Kotlin中增加可为null的Int的简单而好的方法_Syntax_Kotlin - Fatal编程技术网

Syntax 在Kotlin中增加可为null的Int的简单而好的方法

Syntax 在Kotlin中增加可为null的Int的简单而好的方法,syntax,kotlin,Syntax,Kotlin,在Kotlin中增加可为null的Int的最简单、可读性最好的方法是什么?除此之外还有别的办法吗 var myInt: Int? = 3 myInt = if(myInt!=null) myInt+1 else null 如果myInt是一个简单变量,这很好,但是当myInt是一个较长的表达式时,它会增长很长。您可以按可调用的方式调用操作符,如下所示: myInt = myInt?.inc() 请注意,inc()运算符不会改变其接收器的值,而是创建一个新值。这意味着以下语句不会更改myInt

在Kotlin中增加可为null的Int的最简单、可读性最好的方法是什么?除此之外还有别的办法吗

var myInt: Int? = 3
myInt = if(myInt!=null) myInt+1 else null

如果myInt是一个简单变量,这很好,但是当myInt是一个较长的表达式时,它会增长很长。

您可以按可调用的方式调用操作符,如下所示:

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

使用
inc
。在Kotlin中,所有运算符都转换为方法调用。有关更多详细信息,请参阅

var myInt: Int? = 3
myInt = myInt?.inc()
请注意,我已将
inc()
返回的值赋给
myInt
,如下所示:

inc()和dec()函数必须返回一个值,该值将分配给使用了++或--操作的变量。它们不应该改变调用inc或dec的对象

最好的解决办法是一个

如果要按其他值递增,可以使用以下替代方法:

var myInt: Int? = 1
val n = myInt?.plus(1)
println(n)
这张照片是:

2

其他答案提供了较短的备选方案,我将介绍如何正确使用基本if结构:

var myInt: Int? = 3
if (myInt != null) myInt++

这与Java非常相似,您不必添加任何新的复杂层。

您也可以使用
myInt?.plus(i)
,如果您想以任意数量递增。
public val maxFailCount:Integer?=null maxFailCount?.toInt()
是否正常?@DevendraSingh是的,行运行时没有错误。但尽量不要在kotlin中使用
Integer
类。改用
Int
。IntelliJ还警告您这一点。
var myInt: Int? = 3
if (myInt != null) myInt++