Swift-方法嵌套

當(dāng)方法當(dāng)作變量或者參數(shù)后就意味著我們可以在一個方法中定義新的方法,這給代碼結(jié)構(gòu)層次和訪問級別的控制帶來了新的選擇。

如下例的一個方法請求中調(diào)用了很多其他的函數(shù),可是其他的函數(shù)在項目中可能就只有這個方法會調(diào)用到:

func appendQuery(var url: String,
                     key: String,
                   value: AnyObject) -> String {

    if let dictionary = value as? [String: AnyObject] {
        return appendQueryDictionary(url, key, dictionary)
    } else if let array = value as? [AnyObject] {
        return appendQueryArray(url, key, array)
    } else {
        return appendQuerySingle(url, key, value)
    }
}

func appendQueryDictionary(var url: String,
                               key: String,
                             value: [String: AnyObject]) -> String {
    //...
    return result
}

func appendQueryArray(var url: String,
                          key: String,
                        value: [AnyObject]) -> String {
    //...
    return result
}

func appendQuerySingle(var url: String,
                           key: String,
                         value: AnyObject) -> String {
    //...
    return result
}

可以考慮改成這樣的形式

func appendQuery(var url: String,
                     key: String,
                   value: AnyObject) -> String {

    func appendQueryDictionary(var url: String,
                                   key: String,
                                 value: [String: AnyObject]) -> String {
        //...
        return result
    }

    func appendQueryArray(var url: String,
                              key: String,
                            value: [AnyObject]) -> String {
        //...
        return result
    }

    func appendQuerySingle(var url: String,
                               key: String,
                             value: AnyObject) -> String {
        //...
        return result
    }

    if let dictionary = value as? [String: AnyObject] {
        return appendQueryDictionary(url, key, dictionary)
    } else if let array = value as? [AnyObject] {
        return appendQueryArray(url, key, array)
    } else {
        return appendQuerySingle(url, key, value)
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容