簡體   English   中英

Swift String附加可選的nil

[英]Swift String appending with optional nil

打印可選值的第二種方法是正確的,但是有沒有更短的方法編寫具有相同效果的代碼? 即在解開值之前,我們先檢查它是否為零。

var city:String?

func printCityName(){
    let name = "NY"
    //Fails (First Way)
    print("Name of the city is \(name + city)")
    //Success (Second Way)
    if let cityCheckConstant = city {
       print("Name of the city is \(name + cityCheckConstant)")
    }
}

最短的是可選map上的map

var city : String?

func printCityName() {
    let name = "NY"
    city.map{ print("Name of the city is \(name + $0)") }
}

或后衛也很好:

func printCityName(){
    let name = "NY"
    guard let city = city else { return }
    print("Name of the city is \(name + city)")
}

不過,您的代碼還不錯,如果這樣做的話,可讀性更好的版本總是更好。 要提及的一件事: if letif let中,您不必為變量使用其他名稱:

func printCityName(){
    let name = "NY"
    if let city = city {
        print("Name of the city is \(name + city)")
    }
}

編輯:

如果您不希望在第一個版本中每次都使用_ = ,則可以擴展Optional

extension Optional {
    func with(@noescape f: Wrapped throws -> Void) rethrows {
        _ = try map(f)
    }
}

這樣就可以做到這一點:

func printCityName() {
    let name = "NY"
    city.with{ print("Name of the city is \(name + $0)") }
}

沒有警告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM