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