原文:
es6中將會有兩種推導式:陣列推導式(array comprehension)和生成器推導式(generator comprehension),你可以使用它們來快速的組裝出乙個陣列或者乙個生成器物件.許多程式語言中都有推導式這一語法,比如:coffeescript, python, haskell, clojure.
下面就是乙個es6中的陣列推導式的例子:
[for (x of a) for (y of b) if (x > y) [x,y]]
執行該推導式的效果和執行下面這個函式的效果相同(函式中使用了es6中的for-of迴圈).
functionarraycomprehension() }}
return
result;
}
陣列推導式中可以包含下面兩種子式:
陣列推導式可以很方便的將乙個陣列轉換成另乙個陣列:
let numbers = [1,2,3];let squares = [for (x of numbers) x*x];
不過,配合es6中的箭頭函式(arrow function),使用array.prototype.map來完成這項任務貌似更方便:
let squares = numbers.map(x => x * x);
生成器推導式看起來和陣列推導式很類似,但它是用小括號括住的,且返回的是乙個生成器物件,而不是陣列.例如:
(for (x of a) for (y of b) if (x > y) [x,y])
執行該推導式的效果和執行下面這個生成器函式(也是es6特性)的效果相同
function*generatorcomprehension() }}}
你可以這樣遍歷生成器物件中的元素:
let compr =( ... );for(elem of compr)
firefox雖然早已經實現了這兩種推導式,但它實現的語法並不是es6(而是es4),如果你願意,可以簡單的了解並嘗試一下:
es6: for-of, 生成器, 迭代器
es6: 箭頭函式和方法定義
生成器,生成器推導式和列表推導式
python社群,大部分生成器和迭代器是一種 生成器的本質是迭代器 唯一區別 生成器是我們自己用python 構建的資料結構 迭代器都是提供的,或者轉化得來的 生成器函式 生成器表示式 python提供的 yield 乙個next 對應乙個yield yield和下乙個yield中間有 的話只執行乙...
推導式 生成器
1.推導式生成列表 表示式 for item in 可迭代物件 或者 表示式 for item in 可迭代物件 if 條件判斷 推導式生成列表 ls x for x in range 1,5 if x 2 0 2,4 2.生成器生成元組 表示式 for item in 可迭代物件 或者 表示式 f...
生成器 推導式
建立生成器的方法 1.通過生成器函式 yield 2.生成器表示式 def func1 x sum 0 for i in range 1,x x 1 yield xg func1 6 生成器函式對 print g 表示這是乙個迭代器print g.next 乙個next對應乙個yield print...