在使用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
}
答案 0 :(得分:1)
我发给您简短的回答,我会在不久之后提供详细说明:
let countryFlag = country.unicodeScalars.reduce("") { $0 + "\(UnicodeScalar(base + $1.value))" }
现在的解释。首先,你可以跳过附加的行,然后用一句话直接返回:
let countryFlag = country.unicodeScalars.reduce("") { (var flag, code) in
return flag + "\(UnicodeScalar(base + code.value))"
}
之后,您可以跳过声明flag
和code
个变量,因为它们可以推断为$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))" }