ES6 Generator与C#迭代器
2020-12-26 03:27
标签:bug yield 遍历 应用 lan 写法 官方 tostring sof ES6 Generator: 利用阮大神的书中描述的: 其实简单来说就是通过各种状态,函数可以返回多个值,看完文章,我觉着以下这功能可能会用的比较多 上面代码中,对象 优雅的Generator异步应用模块:thunkify和co模块; C# yield 跟ES6中的Generator有异曲同工之妙.可以参考微软官方文档. https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/yield 主要看例子吧,例子很明显也是可以使用迭代器的方式每次返回一个值,但最终可以返回多个值。 迭代器方法: 迭代器的get访问器 ES6 Generator与C#迭代器 标签:bug yield 遍历 应用 lan 写法 官方 tostring sof 原文地址:https://www.cnblogs.com/cby-love/p/13379041.html形式上,Generator 函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号;二是,函数体内部使用yield表达式,定义不同的内部状态(yield在英语里的意思就是“产出”)。
function* objectEntries(obj) {
let propKeys = Reflect.ownKeys(obj);
for (let propKey of propKeys) {
yield [propKey, obj[propKey]];
}
}
let jane = { first: ‘Jane‘, last: ‘Doe‘ };
for (let [key, value] of objectEntries(jane)) {
console.log(`${key}: ${value}`);
}
// first: Jane
// last: Doe
jane
原生不具备 Iterator 接口,无法用for...of
遍历。这时,我们通过 Generator 函数objectEntries
为它加上遍历器接口,就可以用for...of
遍历了。加上遍历器接口的另一种写法是,将 Generator 函数加到对象的Symbol.iterator
属性上面。function* objectEntries() {
let propKeys = Object.keys(this);
for (let propKey of propKeys) {
yield [propKey, this[propKey]];
}
}
let jane = { first: ‘Jane‘, last: ‘Doe‘ };
jane[Symbol.iterator] = objectEntries;
for (let [key, value] of jane) {
console.log(`${key}: ${value}`);
}
// first: Jane
// last: Doe
public class PowersOf2
{
static void Main()
{
// Display powers of 2 up to the exponent of 8:
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
public static System.Collections.Generic.IEnumerableint> Power(int number, int exponent)
{
int result = 1;
for (int i = 0; i )
{
result = result * number;
yield return result;
}
}
// Output: 2 4 8 16 32 64 128 256
}
public static class GalaxyClass
{
public static void ShowGalaxies()
{
var theGalaxies = new Galaxies();
foreach (Galaxy theGalaxy in theGalaxies.NextGalaxy)
{
Debug.WriteLine(theGalaxy.Name + " " + theGalaxy.MegaLightYears.ToString());
}
}
public class Galaxies
{
public System.Collections.Generic.IEnumerable
文章标题:ES6 Generator与C#迭代器
文章链接:http://soscw.com/index.php/essay/38254.html