紧凑的SWIFT减少关闭

时间:2016-03-15 09:48:43

标签: 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 
}

1 个答案:

答案 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))"
}

之后,您可以跳过声明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))" }