草庐IT

Iterator与Generator

全部标签

ruby-on-rails - 工厂女孩/Rails : Generator to create a factory for existing model?

我在我的Rails项目中使用rspec_rails和factory_girl_railsgem。所有模型都已创建。是否有我可以运行的生成器来为现有模型创建工厂文件?例如:我已经有了一个Blog模型。RSpec允许我通过简单地运行以下命令在spec/models/blog_spec.rb生成一个模型规范文件:railsgeneraterspec:modelblog是否有我可以在命令行中运行的生成器,它会为这个现有模型生成工厂文件,位于:spec/factories/blogs.rb?我在factory_girl_rails中没有看到任何关于发电机的提及文档。

ruby-on-rails - Rails sitemap_generator 未初始化常量?

我正在尝试使用Rails站点map_generatorgem为一个包含8,000,00个页面的站点生成站点地图。gem可以在这里找到:https://github.com/kjvarga/sitemap_generator这是我在sitemap.rb中的代码:require'rubygems'require'sitemap_generator'#SetthehostnameforURLcreationSitemapGenerator::Sitemap.default_host="http://www.mysite.com"SitemapGenerator::Sitemap.create

ruby-on-rails - "Could not find generator figaro:install"

我正在使用来自learn-rails.com的“学习RubyOnRails”pdf书。我在第13章“配置”。我们应该在哪里执行命令:“railsgeneratefigaro:install”在第12章中,我们安装了figarogem:“我们已经在Gemfile中安装了figarogem并运行bundleinstall。”当我运行该命令时,我得到:“找不到生成器figaro:install。”我开始搜索类似的问题,我确实在这里找到了这个问题:railsgenerate-"Couldnotfindgenerator"他们被建议在命令中也包含“迁移”。我将它包含在我的命令中并让它做某事,但我

javascript - 我们可以用 ES6 Generator 做哪些不能用 for 循环做的事情?

我了解了ES6的特性,Generators引起了我的注意。突然想到的一件事是链接Promise对象,这是我无法用循环实现的。我们还能做哪些以前做不到的其他机制?我知道这是一个宽泛的问题,但目前我仍然想不出除了Promises之外的任何东西。 最佳答案 通过使用yield,生成器可以在函数控制流中的任何点暂停,从而保存当前的执行状态(作用域和堆栈)。没有生成器,这就更复杂了:你需要明确地跟踪状态分支和(尤其是)循环控制结构需要以函数式方式表示,即递归编写。生成器通常可用于遍历数据结构,创建一个简单的类似流的迭代器,按顺序生成所有元素。

javascript - NodeJS 控制台语法错误 : Unexpected token * for generator

我正在运行NodeJS控制台:$node--versionv0.12.0我正在尝试实现一个像这样的生成器函数function*colorGen(){varcolors=["red","green","blue","white"]vari=0;yieldcolors[i];i+=1;if(i>3){i=0;}}但是当我运行第一行时,出现语法错误:$node>function*colorGen(){SyntaxError:Unexpectedtoken*atObject.exports.createScript(vm.js:44:10)atREPLServer.defaultEval(re

javascript - 在 ES6 中,有 iterator.next();有没有办法提供 iterator.previous()?

完整的ES6Compatibilitytable.刚进入Set()。constset=newSet();set.add('foo');set.add('baz');constiterator=set.values();iterator.next();//{value:"foo",done:false}iterator.next();//{value:"baz",done:false}是否可以编写类似于iterator.next()的方法,但它向后迭代而不是向前迭代(即iterator.previous())? 最佳答案 values

javascript - 使用 'koa-router' , app.use(router(app)) 抛出 "requires a generator function"错误信息

varapp=require('koa')();varrouter=require('koa-router');app.use(router(app));抛出这个错误:AssertionError:app.use()requiresageneratorfunction很多示例代码都说要以这种方式设置koa-router。据推测,它向koa应用程序添加了方法。 最佳答案 koa-router包在几个月前发生了变化,并删除了扩展应用程序对象的功能,正如您在上面编码的那样......它曾经以这种方式工作,但这是一个重大变化:http://

javascript - 为什么 Javascript `iterator.next()` 返回一个对象?

帮助!在用C#编程了很长一段时间后,我开始喜欢上Javascript,但我一直在学习喜欢可迭代协议(protocol)!为什么Javascript采用protocol需要为每次迭代创建一个新对象?为什么有next()返回一个属性为done的新对象和value而不是采用像C#IEnumerable这样的协议(protocol)和IEnumerator它以需要两次调用为代价不分配任何对象(一次调用moveNext以查看迭代是否完成,第二次调用current以获取值)?是否有底层优化跳过由next()返回的对象的分配??很难想象,因为iterable不知道返回后如何使用该对象...生成器似乎

javascript - 如何实现 Symbol.iterator?

我正在尝试创建Set的子类,因为我不能简单地从它扩展,所以我包装了它的功能。我正在尝试实现Symbol.iterator方法,但Flow没有。这是我的代码:/*@flow*/classCSet{_set:Set;[Symbol.iterator]():Iterator{returnthis._set[Symbol.iterator];}}vara:CSet=newCSet();for(varbofa){}core.js:309:5,29:property@@iteratorPropertynotfoundintest.js:2:7,10:CSettest.js:4:2,6:2:comp

javascript - Generator.next() 如何处理它的参数?

documentation说“您还可以为next方法提供一个参数,以将值发送到生成器。”它发送到哪里?例如,采用这3个生成器:function*one(){while(true){varvalue=yieldnull;}}varg1=one();g1.next();g1.next(1000);//yieldsnullfunction*two(){vari=0;while(true){i+=yieldi;}}varg2=two();g2.next();g2.next(1000)//yields1000function*three(){varindex=0;while(true)yield