英文:
Correct usage of return if in Kotlin
问题
在Kotlin中,你可以用两种方式编写下面的函数:
fun getProduct(id: Int): Product? {
if (id < 1) return null
return productProvider.getProduct(id) // 假设getProduct永远不会失败
}
或者如下:
fun getProduct(id: Int) = if (id > 0) {
productProvider.getProduct(id) // 假设getProduct永远不会失败
} else {
null
}
有人建议我始终使用后一种方式,因为这是正确的方式。有人能指导我吗?为什么第二种语法更好?
我可以猜测从性能的角度来看,它们完全相同,而且我个人认为第二种方式并不更易阅读。
英文:
So in Kotlin you can write the below function in two ways:
fun getProduct(id: Int): Product? {
if (id < 1 ) return null
return productProvider.getProduct(id) /// Assuming getProduct NEVER fails
}
Or as below:
fun getProduct(id: Int) = if (id > 0 ){
productProvider.getProduct(id) /// Assuming getProduct NEVER fails
}else {
null
}
I am being suggested to always use the latter, as is the proper way.
Can someone point me in the right direction on this? Why is the second syntax better?
I can guess that performance wise they are exactly the same and ( IMO ) I do not find the second one more readable at all.
答案1
得分: 0
这并不更加正确或者性能更好。这是一种风格选择。
你可以选择包括返回类型,使第二个选项更易阅读:
fun getProduct(id: Int): Product? = if (id > 0 ) {
productProvider.getProduct(id)
} else {
null
}
在这里,使用一个when
表达式也可能有帮助。
英文:
It is not more correct or better-performing. It is a style choice.
You do have the option of including the return type to make the second one more readable:
fun getProduct(id: Int): Product? = if (id > 0 ) {
productProvider.getProduct(id)
} else {
null
}
A when expression could also help here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论