劉老師你好
liu老師和學友你們好, 請問一下:本章節里的 reduce 函數 是 第一次介紹嗎 還是在以前的章節里有介紹,如果 以前的章節里有介紹過 請問是那一章節? ?若果沒有介紹》 本章節的reduce 沒有聽懂 請詳細 ?講解一下 ? 謝謝
liu老師和學友你們好, 請問一下:本章節里的 reduce 函數 是 第一次介紹嗎 還是在以前的章節里有介紹,如果 以前的章節里有介紹過 請問是那一章節? ?若果沒有介紹》 本章節的reduce 沒有聽懂 請詳細 ?講解一下 ? 謝謝
2016-09-26
舉報
2019-01-16
reduce是三大面向函數編程函數之一,其他兩個是map(轉換信息)和filer(過濾信息)
num.reduce函數中有兩個參數(initialResult : Result , nextPartialResult : (Result , xxx) throws -> Result)
可以看到第一個參數是用來做初始值的,第二個參數是要求傳入的是一個函數或閉包(其中的參數一個是Result即reduce里面的第一個參數,第二個值是你數組里面的值(xxx是指這個值的類型))
可以看出 這個reduce函數通過把你傳入的初始值放進你傳入的函數或閉包進行多次邏輯操作,返回的值是reduce里面的第一個參數。 有點像 ?let a = 0 ; a += 1 ; a進去跟1進行操作,結果重新賦值給a
假設有個數組[1,2,3,4] 你.reduce(0, { return $0+$1 }) 結果是 10 . 這里的$0是指閉包里面第一個參數, $1是第二個參數 , 這里進行的操作是 0+1->1(result) 1+2->3(result) 3+3->6(result) 6+4->10(result)進行了四次操作,因為數組里面有四個元素,他們要依次跟$0進行操作。
當然不止上面這種累加操作啦 你也可以做累減reduce(10 , {return $0-$1}) 結果是0
老師那種就是取出最大值,他把reduce里面的第一個參數變成num[0],不再是自己放個默認進去與數組進行操作
邏輯就是 num[0] 對比 num[0]?num[0] 對比 num[1]?num[0] 對比 num[2] 其中的對比如果左邊比右邊小,就把右邊值賦給左邊 相信不難實現吧 希望這個解釋能看懂?
2016-10-10
沒看懂你的答復,太粗略。 我是問 ?reduce 函數的 ?講解 你說數組和閉包 不知所言, 不過還是謝謝, 下次回答請 纖細解答 多謝
2016-10-05
以前介紹過,你可以查看一下第一季或者第二節,專門講數組的那一節,這是對數組的處理,閉包那部分自己去找