swift - Compact SWIFT Reduce 闭包

标签 swift reduce emoticons country-codes

在使用ISO国家代码获取一个国家的国旗形式表情的过程中,我搞出了这个闭包。 有什么建议可以通过匿名关闭使它更紧凑吗?

    let base : UInt32 = 127397
    let country = "CH"
    let countryFlag = country.unicodeScalars.reduce("") { (var flag, code)  in
    flag.append((UnicodeScalar(base + code.value)))
    return  flag 
}

最佳答案

我发给你一个简短的答案,稍后我会提供详细的解释:

let countryFlag = country.unicodeScalars.reduce("") { $0 + "\(UnicodeScalar(base + $1.value))" }

现在是解释。所以首先可以跳过append这一行,直接一句话返回:

let countryFlag = country.unicodeScalars.reduce("") { (var flag, code)  in
    return  flag + "\(UnicodeScalar(base + code.value))"
}

之后您可以跳过声明 flagcode 变量,因为它们可以推断为 $0$1:

let countryFlag = country.unicodeScalars.reduce("") {
    return  $0 + "\(UnicodeScalar(base + $1.value))"
}

最后,如果您的闭包由单个 return 语句组成,您可以省略 return 关键字。我更喜欢将它们移动到一行以提高可读性:

let countryFlag = country.unicodeScalars.reduce("") { $0 + "\(UnicodeScalar(base + $1.value))" }

关于swift - Compact SWIFT Reduce 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007721/

相关文章:

javascript - 正则表达式匹配各种类型的表情列表

facebook - 如何制作 Facebook 聊天的大表情?

ios - EXC_BAD_ACCESS 关于观察 TableView contentSize 值

ios - 透明导航栏不起作用(出现半透明蓝色)

java - Java 8 中 reduce 的累加器是否允许修改其参数?

java8 用无用的组合器来减少

arrays - 快速获取 double 组的总和

programming-languages - 您可以在您的语言中将哪些表情符号放入类(class)名称中?

swift - 如何使用 SwiftyDropbox 自动登录?

ios - 如何在没有 prepareForSegue 的情况下在 Swift 文件之间传递数据?