草庐IT

enum_iterator

全部标签

javascript - 为什么卡住的 "enum"变慢了?

为了访问数组中的数据,我创建了一个类似于enum的变量,以便为字段提供人类可读的标识符。varcolumns={first:0,second:1};vararray=['first','second'];vardata=array[columns.first];当我发现Object.freeze时,我想将其用于枚举以使其无法更改,并且我希望VM能够利用此信息发挥其优势。事实证明,测试在Chrome和Node上变慢,但在Firefox上稍快(与通过数字直接访问相比)。代码可在此处获得:http://jsperf.com/array-access-via-enum以下是来自Node的基准测

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 - ES6 生成器 : transforming callbacks to iterators

我正在babel的帮助下试验ES6生成器,而且我很难理解如何(或者如果!)我可以有效地使用基于回调的异步函数来输出迭代器。假设我希望能够编写一个函数,该函数接受多个url,异步下载它们并在下载后立即返回它们。我希望能够编写如下内容:leturls=['http://www.google.com','http://www.stackoverflow.com'];for({url,data}ofdownloadUrls(urls)){console.log("Contentofurl",url,"is");console.log(data);}如何实现downloadUrls?理想情况下,

javascript - HTMLCollections 可以用 for...of (Symbol.iterator) 迭代吗?

DOM4使NodeList可迭代:interfaceNodeList{getterNode?item(unsignedlongindex);readonlyattributeunsignedlonglength;iterableNode>;};根据WebIDL,这意味着Objectsimplementinganinterfacethatisdeclaredtobeiterablesupportbeingiteratedovertoobtainasequenceofvalues.Note:IntheECMAScriptlanguagebinding,aninterfacethatisit

javascript - 为什么 ES 6's Map.forEach iterate with ' value, key' 而不是 'key, value' ?

如MDN所示,Map的forEach回调被调用,先是值,然后是键。例如:map.forEach(function(value,key,map){...})似乎key,value比value,key更常见。即使是Mapconstructor需要一组[key,value]对。 最佳答案 这可能只是出于懒惰的缘故。大多数forEach循环只关心value本身。通过将它作为第一个参数提供,您可以构造一个只接受一个参数的函数:map.forEach(function(value){/*dosomethingwithvalue*/;})代替ma

javascript - 在 ES6 之前的 Typescript 中实现 Iterator<T> 的推荐方法

这个问题在这里已经有了答案:typescript:makeclassobjectsiterable(3个答案)关闭5年前。我有一个项目,其中包含许多理想情况下会实现Iterable的类和/或Iterator接口(interface)。但是我似乎找不到这些接口(interface)的标准TypeScript定义(例如在typescript-collections或一些类似的包中)。我知道这些在ECMAScript6中通过Symbol.iterator有所标准化。机制,但我的目标是ECMAScript5,并且在可预见的future将保持不变。我能否以某种方式获得这些接口(interface

javascript - Apollo "Subscription field must return Async Iterable. Received: undefined"

我有一个触发channel事件“countIncr”的突变,但我没有看到事件的相应订阅与事件负载一起触发。更新:我已经对这篇文章进行了多次更新,现在我正在更改标题以更能代表我所在的位置。我收到graphqlPlayground错误"SubscriptionfieldmustreturnAsyncIterable.Received:undefined"我遇到问题的TGRstack复制:https://github.com/TGRstack/tgr-apollo-subscription-example-microservice/没有TGRstack的工作再现:https://github

javascript - 在 Javascript 中使用 'enum' 类型而不是字符串有什么意义吗?

我有静态类型语言的背景,我从枚举中获得的主要好处是编译时错误捕获。我正在用Javascript编写一个小程序,我发现自己想要类似枚举的东西,可能是这样的:varFruit={BANANA:"BANANA",APPLE:"APPLE",PEAR:"PEAR";};但我看不出这样做有什么好处。我还不如在任何需要这个“枚举”的地方都使用字符串。我应该只使用javascript中的字符串来代替其他语言中的枚举类型吗? 最佳答案 这是提取常见事物(如魔数(MagicNumber)/字符串或类似事物)的好方法。想象一下,你到处都是BANANA然

java - Golang enum 可以像 Java 的 enum 一样做同样的行为吗?

Java的枚举具有有用的方法“valueOf(string)”,它通过名称返回const枚举成员。例如。enumROLE{FIRST("Firstrole"),SECOND("Secondrole")privatefinalStringlabel;privateROLE(labelString){this.label=label;}publicStringgetLabel(){returnlabel;}}//inotherplaceofcodewecando:ROLE.valueOf("FIRST").getLabel();//get's"Firstrole"此行为非常有用,例如,在h