Kotlin条件表达式与Elvis操作符?:

举报
yd_221104950 发表于 2020/11/28 22:53:12 2020/11/28
【摘要】 条件表达式 如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示: Return should be lifted out of 'if' 其实就是建议你用条件表达式。 如果下面这个方法: fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { retu...

条件表达式

如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示:
Return should be lifted out of 'if'
其实就是建议你用条件表达式。
如果下面这个方法:

fun maxOf(a: Int, b: Int): Int {
	if (a > b) {
		return a
	} else {
		return b
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

因为我们的条件语句中只是做赋值操作,因此建议写成这样:

 fun maxOf(a: Int, b: Int): Int { return if (a > b) { a } else { b } }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

写成下面的条件表达式:

fun maxOf(a: Int, b: Int) = if (a > b) a else b

  
 
  • 1

再举个例子:
如果有一个这样的例子:

if (holder.mCB.isChecked) {
	selectedPosition =  position
 } else { selectedPosition =  -1
 }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

如果条件语句块里只是赋值的话,Kotlin建议你用条件表达式(就像Java的三元运算运):

selectedPosition = if (holder.mCB.isChecked) { position } else { -1 }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

Elvis操作符?:

条件表达式更简洁的表达就是用Elivs操作符,如条件表达式:
如果b不为空,则获取它的长度,否则返回-1。

val l: Int = if (b != null) b.length else -1

  
 
  • 1

转换成Elvis表达式,则更简洁:

val l = b?.length ?: -1

  
 
  • 1

上述第一个问号,如果b为空,就不会执行后面获取长度的操作,返回默认值-1。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/107896789

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。