如何将Swift代码改写为如Kotlin版本般简洁的写法?
Swift简化实现方案
你可以借助Swift的可选型map方法和空合运算符,实现和Kotlin版本简洁度一致的等价代码,以下是两种常用写法:
写法1(和Kotlin逻辑完全对齐,最简洁)
func example(someInt: Int, someNullableInt: Int?) -> String { let nonNullStr = convertAnIntegerToStringButTakesOnlyNonNullInt(someInt) return someNullableInt.map { nonNullStr + convertAnIntegerToStringButTakesOnlyNonNullInt($0) } ?? nonNullStr }
如果使用Swift 5.1及以上版本,还可以利用单表达式隐式返回特性进一步缩短:
func example(someInt: Int, someNullableInt: Int?) -> String { convertAnIntegerToStringButTakesOnlyNonNullInt(someInt) + (someNullableInt.map(convertAnIntegerToStringButTakesOnlyNonNullInt) ?? "") }
逻辑说明
- Swift的
Optional.map完全对应Kotlin的?.let逻辑:可选值非空时解包传入闭包处理,空时直接返回nil - Swift的空合运算符
??等价于Kotlin的?:,左侧值为nil时返回右侧默认值 - 第二种写法直接将转换函数作为参数传入map,省略了闭包参数的显式声明,代码更紧凑。
内容的提问来源于stack exchange,提问作者ming chen
相关产品推荐
相关产品推荐

