Tag: 语言function

在C ++函数调用中使用increment运算符是否合法?

在这个问题上,关于下面的代码是否是合法的C ++有一些争论: std::list<item*>::iterator i = items.begin(); while (i != items.end()) { bool isActive = (*i)->update(); if (!isActive) { items.erase(i++); // *** Is this undefined behavior? *** } else { other_code_involving(*i); ++i; } } 这里的问题是, erase()会使有问题的迭代器失效。 如果这发生在i++被评估之前,那么就像这样增加i技术上是未定义的行为,即使它似乎与一个特定的编译器一起工作。 辩论的一面说,在函数被调用之前,所有的函数参数都被完全评估。 另一方面说:“唯一的保证是i ++会在下一个语句之前和i ++被使用之后发生,无论是在擦除之前(i ++)被调用还是之后的编译器都依赖于它。 我打开这个问题希望能够解决这个问题。

什么是Javascript中的多态性?

我已经阅读了一些我可以在互联网上find的关于多态性的文章 。 但是我觉得我不太明白它的意思和它的重要性。 大多数文章没有说明为什么它是重要的,我怎么能在OOP中实现多态行为(当然在JavaScript中)。 我不能提供任何代码示例,因为我还没有想法如何实现它,所以我的问题如下: 它是什么? 为什么我们需要它? 怎么运行的? 我怎么能在JavaScript中实现这种多态行为? 我有这个例子。 但是这个代码的结果是容易理解的。 它没有给出关于多态性本身的清晰的概念。 function Person(age, weight) { this.age = age; this.weight = weight; this.getInfo = function() { return "I am " + this.age + " years old " + "and weighs " + this.weight +" kilo."; } } function Employee(age, weight, salary) { this.salary = salary; […]

使用JavaScript中的Array.map去除元素

我想通过使用map()函数过滤一个项目的数组。 这是一个代码片段: var filteredItems = items.map(function(item) { if( …some condition… ) { return item; } }); 问题是过滤出来的项目仍然使用数组中的空间,我想完全清除它们。 任何想法? 编辑:谢谢,我忘了filter() ,我想要的其实是一个filter()然后一个map() 。 编辑2:感谢指出map()和filter()没有在所有浏览器中实现,虽然我的具体代码不打算在浏览器中运行。

编写一个vim函数来插入一个静态文本块

我希望能够在vim中做这样的事情(如果有帮助,你可以假设v7 +)。 键入一个像这样的命令(或closures的东西) :inshtml 并让vim将以下内容转储到当前光标位置的当前文件中 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> </body> </html> 我可以写一个vim函数吗? 有没有更好的办法?

Java中long,double,byte,char的用途是什么?

所以我正在学习java,我有一个问题。 似乎int , boolean和stringtypes对于我所需要的所有variables来说都是很好的,除非在数字中需要十进制数字的时候也可以使用float 。 我的问题是,其他types,如long , double , byte , char等常用,日常编程? 这些可以用来做些什么实际的事情? 他们为什么存在?

functionOO混合语言的devise模式?

Scala等语言已经有最佳实践吗? 我已经find了function语言的devise模式,function性战略编程的devise模式 。 有OO语言的GoFdevise模式。 但是functionOO混合动力车有没有什么模式? 我所见过的就是这个清单。 什么是已知的?

纯度vs参考透明度

这些术语似乎有不同的定义 ,但我总是想到一个意味着另一个; 我不能想到任何情况下,一个expression是透明的,但不是纯粹的,反之亦然。 维基百科针对这些概念维护不同的文章,并说: 从参考透明度 : 如果expression式中涉及的所有函数都是纯函数,那么expression式就是透明的。 另外,如果expression式中包含一些不纯的函数,那么它们的值将被丢弃,并且其副作用不明显。 从纯粹的表情 : 纯函数是构造纯expression式所必需的。 纯粹的expression通常被认为是透明的。 我觉得这些陈述混淆。 如果来自所谓的“不纯function”的副作用不足以允许不执行它们(即,用它的值replace对这样的function的调用),而不实质上改变程序,则它就像在第一个地方,不是吗? 有没有更简单的方法来理解纯粹的expression和透明的expression之间的区别? 如果有差异,清楚地表明它的示例expression将不胜感激。

函数默认参数和命名值

比方说,我有一个R函数,其中参数可以是几个预定义的命名值(其中之一是默认值)或自定义字符向量之一。 我应该如何实现这一点,而不依靠魔术价值名称或其他标志? #allow use of predefined subsets or pass their own list bratPack<-function(members='CORE',…){ if (members=='CORE') members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy') else if (members=='ALL') members<-c('Emilio Estevez','Anthony Michael Hall','Rob Lowe','Andrew McCarthy','Demi Moore','Judd Nelson','Molly Ringwald','Ally Sheedy','James Spader','Robert Downey, Jr.','Jon Cryer', 'John Cusack', 'Kevin Bacon', 'Jami Gertz', 'Mary Stuart Masterson', 'Matthew Broderick', 'Sean Penn', […]

scala:如何将扩展列表作为可变parameter passing给方法?

在scala中创build一个Map时,我调用Map(entities.map{e => e.id -> e}) ,我得到: found : scala.collection.mutable.IndexedSeq[(Int, Entity)] required: (Int, Entity) 这是因为Map.apply的签名是: def apply[A, B](elems: (A, B)*): CC[A, B] ,它需要一个可变参数风格的参数。 有没有办法转换IndexedSeq以便它可以通过Map.apply接受?

使用Function.prototype.bind与参数数组?

我怎样才能调用Function.prototype.bind一个参数数组,而不是硬编码参数? (不使用ECMA6,所以没有传播运营商)。 我试图把承诺包装周围使用callback模块,我想绑定所有parameter passing到我的包装方法,并绑定它们。 然后我想用我自己的callback调用部分应用的绑定函数,这将解决或拒绝承诺。 var find = function() { var deferred, bound; deferred = Q.defer(); bound = db.find.bind(null, arguments); bound(function(err, docs) { if(err) { deferred.fail(err); } else { deferred.resolve(docs); } }); return deferred.promise; } 但是显然这不起作用,因为绑定需要参数而不是参数数组。 我知道我可以通过将我的callback插入到参数数组的末尾来使用apply: arguments[arguments.length] = function(err, docs) { … } db.find.apply(null, arguments); 或者通过遍历参数数组并重新定义每个参数的函数: var bound, context; for(var i = 0; i […]