小编jpa*_*cek的帖子

为什么PartialFunction <:Scala中的函数?

在Scala中,PartialFunction[A, B]类派生自类型Function[A, B](请参阅Scala参考,12.3.3).然而,这对我来说似乎违反直觉,因为a Function(需要为所有人定义A)具有比a更严格的要求PartialFunction,这在某些地方可能是不确定的.

我遇到的问题是,当我有部分功能时,我不能使用a Function来扩展部分功能.例如.我不能做:

(pf orElse (_)=>"default")(x)
Run Code Online (Sandbox Code Playgroud)

(希望语法至少是远程正确的)

为什么这个子类型反向完成?是否有任何我忽略的原因,比如这些Function类型是内置的?

顺便说一句,如果是Function1 :> Function0这样我也不需要在上面的例子中使用伪参数:-)

编辑以澄清子类型问题

通过两个例子可以强调两种方法之间的区别.哪一个是对的?

一:

val zeroOne : PartialFunction[Float, Float] = { case 0 => 1 }
val sinc = zeroOne orElse ((x) => sin(x)/x) // should this be a breach of promise?
Run Code Online (Sandbox Code Playgroud)

二:

def foo(f : (Int)=>Int) {
  print(f(1))
}
val bar = new PartialFunction[Int, Int] {
  def apply(x : Int) = x/2 …
Run Code Online (Sandbox Code Playgroud)

type-systems scala subtype

44
推荐指数
2
解决办法
6808
查看次数

XMLHttpRequest的onerror处理程序何时应该触发

理解XMLHttpRequest处理程序时遇到一些问题.规范说明了这个onerror处理程序:

error [Dispatched ...]请求失败时.

load [Dispatched ...]请求成功完成后.

问题是,"请求失败了"是什么意思.那可能是

  • 根本无法发出请求(例如,拒绝连接和此类错误),或者
  • 以上加服务器返回错误代码(例如404)

此外,我想知道它是否意味着onerror并且onload永远不应该同时开火.

此引用表示onerror应根据status代码执行处理程序并onload依赖于readyState.这表明它们并不相互排斥,但是,我不认为这是一个权威的信息.

我问,因为使用最新的Opera快照,我发现onload甚至在404状态代码上被解雇.我知道测试status是一个肯定的赌注,但我想知道这是我必须按照规范做什么,或者只是解决Opera中的错误.

javascript ajax xmlhttprequest

43
推荐指数
1
解决办法
4万
查看次数

为什么我收到 zsh: exec 格式错误?

我正在尝试从 zsh 终端运行 Metal 可执行文件,以便对 GWAS 数据进行元分析。我的可执行文件位于正确的目录中,并且已检查它是否由于截断而不是 0MB。

可重现:从http://csg.sph.umich.edu/abecasis/metal/download/下载 Linux 文件

在终端中:

PATH TO EXECUTABLE ./metal
zsh: exec format error: ./metal
Run Code Online (Sandbox Code Playgroud)

zsh

28
推荐指数
2
解决办法
11万
查看次数

numeric_limits <double> :: digits10是什么意思?

numeric_limits :: digits10的确切含义是什么?stackoverflow中的一些其他相关问题使我认为它是double的最大精度,但是

  • 当精度大于17(== 2 + numeric_limits :: digits10)时,以下原型开始工作(成功为真)
  • 使用STLPort,最后是readDouble == infinity; 使用microsoft的STL,readDouble == 0.0.
  • 这个原型有任何意义:)?

这是原型:

#include <float.h>
#include <limits>
#include <math.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
int main(int argc, const char* argv[]) {
  std::ostringstream os;
  //int digit10=std::numeric_limits<double>::digits10; // ==15
  //int digit=std::numeric_limits<double>::digits; // ==53
  os << std::setprecision(17);
  os << DBL_MAX;
  std::cout << os.str();
  std::stringbuf sb(os.str());
  std::istream is(&sb);
  double readDouble=0.0;
  is >> readDouble;
  bool success = fabs(DBL_MAX-readDouble)<0.1;
}
Run Code Online (Sandbox Code Playgroud)

c++ stl

15
推荐指数
4
解决办法
7197
查看次数

函数内部的静态变量如何工作?

在以下代码中:

int count(){
    static int n(5);
    n = n + 1;
    return n;
}
Run Code Online (Sandbox Code Playgroud)

n在第一次调用函数时,变量仅实例化一次.

应该有一个标志或其他东西,所以它只将变量初始化一次..我试着从gcc查看生成的汇编代码,但没有任何线索.

编译器如何处理这个?

c c++ compiler-construction static

15
推荐指数
2
解决办法
2887
查看次数

c ++ 11:std :: forward的微妙之处:身份真的有必要吗?

我设置了一个测试用例来了解完美转发.

std::string inner(const std::string& str ) {
return "const std::string&";
}
std::string inner(std::string& str ) {
    return "std::string&";
}
std::string inner(const std::string&& str ) {
    return "const std::string&&";
}
std::string inner(std::string&& str ) {
    return "std::string&&";
}

template <typename T> void outer(T&& t) {
  std::cout << "t: " << t << std::endl;
  std::cout << "perfect forward: " << inner(std::forward<T>(t)) << std::endl;
  std::cout << std::endl;
}

void PerfectForwarding()
{
     outer("literal");
     outer(lvalue);
     outer(constlvalue);
     outer(rvalue());
     outer(constrvalue());
}
Run Code Online (Sandbox Code Playgroud)

std::forward按预期工作.当我实现我自己的没有身份的转发函数时,有趣的行为出现了:

template <typename T> T&& …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2010 visual-c++ c++11

12
推荐指数
1
解决办法
1920
查看次数

复制或引用boost :: spirit的规则<>的语义?

我试图在Boost.Spirit中编写一个shell语言解析器.但是,我不清楚有关rules 语义的一些基本问题.

综观文档,有成员r.alias()r.copy()rule.IIUC,这些成员应分别返回对规则的引用和规则内容的副本.但是,我没有明确说明当我在另一个规则的定义中使用该规则时会发生什么.从我的实验中,我发现相互递归规则可以通过以下方式定义:

rule<Iter> r1, r2;
r1 = ... >> r2 >> ...;
r2 = ... >> r1 >> ...;
Run Code Online (Sandbox Code Playgroud)

这表明规则是通过解析器表达式中的引用来获取的.问题是,当变量超出范围时它会做什么,例如:

rule<Iter> r1;
{ 
  rule<Iter> r2;
  r1 = ... >> r2 >> ...;
  r2 = ... >> r1 >> ...;
}
... // use r1
Run Code Online (Sandbox Code Playgroud)

在同一个注释中,将从包含类型规则工作的rvalue的解析表达式中分配规则(r.copy()也将是类型的右值rule,不是吗)?例如.

rule<Iter> f() { return char_('a') << char_('b'); }
rule<Iter> r1 = ... << f();
Run Code Online (Sandbox Code Playgroud)

任何人都可以启发我rule的副本和引用的详细语义,并可能纠正这篇文章中的任何误解吗?

c++ boost-spirit

11
推荐指数
1
解决办法
1162
查看次数

在Scala中键入参数与成员类型

我想知道成员类型如何在Scala中工作,以及如何关联类型.

一种方法是使关联类型成为类型参数.这种方法的优点是我可以规定类型的方差,我可以确定子类型不会改变类型.缺点是,我无法从函数中的类型推断出类型参数.

第二种方法是使关联类型成为第二种类型的成员,其问题是我不能在子类型的关联类型上规定边界,因此,我不能在函数参数中使用类型(当x: X,X#T可能与xT没有任何关系)

一个具体的例子是:

我有一个DAT特征(可能没有类型参数)

trait DFA[S] { /* S is the type of the symbols in the alphabet */
  trait State { def next(x : S); }
  /* final type Sigma = S */
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个函数来在输入序列上运行这个DFA,我想要

  • 该函数必须采用任何<% Seq[alphabet-type-of-the-dfa]输入序列类型
  • 函数调用者不需要指定类型参数,所有必须推断
  • 我想用具体的DFA类型调用函数(但是如果有一个解决方案,函数没有DFA的类型参数,那就没关系)
  • 字母表类型必须是不受约束的(即,必须有Char的DFA以及未知的用户定义的类)
  • 具有不同字母类型的DFA不是子类型

我试过这个:

def runDFA[S, D <: DFA[S], SQ <% Seq[S]](d : D)(seq : SQ) = ....
Run Code Online (Sandbox Code Playgroud)

这是有效的,除了这里没有推断出类型S,所以我必须在每个调用站点上编写整个类型参数列表.

def runDFA[D <: DFA[S] forSome { type S }, SQ <% Seq[D#Sigma]]( ... same as above
Run Code Online (Sandbox Code Playgroud)

这不起作用(无效循环引用类型D ???(它是什么?)) …

types scala type-inference

10
推荐指数
1
解决办法
2395
查看次数

如何从QGraphicsScene中删除所有QGraphicsItem

我写了一个派生类QGraphicsScene.在某一点上,我需要从场景中删除所有项目,我希望物品被物理销毁(析构函数被调用).我尝试了以下方法:

QList<QGraphicsItem*> all = items();
for (int i = 0; i < all.size(); i++)
{
    QGraphicsItem *gi = all[i];
    removeItem(gi);
    delete gi; // warning at this line
}
Run Code Online (Sandbox Code Playgroud)

Qt Creator发出警告:警告:C4150:删除指向不完整类型'QGraphicsItem'的指针; 没有破坏者叫

我不知道为什么会这样.QGraphicsItem有虚拟析构函数所以应该从内存中删除项目.

如果这不是正确的方法,我怎么能删除所有QGraphicsItemQGraphicsScene?请注意,我知道删除场景后,所有项目也将被删除.但我想从场景中删除项目并绘制其他项目.我希望从内存中删除已删除的项目.

c++ qt incomplete-type

10
推荐指数
3
解决办法
1万
查看次数

优化有多重要?

昨天我与老板讨论了在构建软件时优化的正确作用.从本质上讲,他的立场是优化需要成为整个开发过程中的主要关注点.

我的观点是你需要在开发过程中做出正确的算法决策,但你永远不应该在开发过程中计算周期.事实上,我对此感到非常强烈,我不得不离开谈话.我在"优化"的名义下看到了太多错误的编程决策,而且过多的错误代码以"这种方式更快"为借口辩护.

StackOverflow.com社区的想法是什么?

optimization

9
推荐指数
4
解决办法
739
查看次数