相关疑难解决方法(0)

408
推荐指数
8
解决办法
18万
查看次数

静态/动态与强/弱

我看到这些术语在编程中遍布各地,我对它们的含义有一个模糊的概念.搜索显示,事实上,这些事情已被问到堆栈溢出.据我所知,语言中的静态/动态类型与强/弱类型略有不同,但这种差异是我的意思.不同的来源似乎使用不同的含义甚至可以互换地使用这些术语.我找不到谈论两者的地方,实际上说明了差异.如果有人能够在这里为我和世界其他地方清楚地说明这一点,那会更好.

terminology static-typing weak-typing strong-typing dynamic-typing

303
推荐指数
9
解决办法
6万
查看次数

可以将常规JavaScript转换为asm.js,还是只是为了加速静态类型的低级语言?

我已经阅读了如何使用asm.js测试和开发的问题,接受的答案提供了http://kripken.github.com/mloc_emscripten_talk/#/的链接.

该幻灯片的结论是" 静态类型语言,特别是C/C++可以有效地编译成JavaScript ",因此我们可以" 期望编译的C/C++的速度比本机代码慢2倍,或更好,今年晚些时候 ".

但是非静态类型的语言呢,比如常规的JavaScript本身呢?可以编译为asm.js吗?

javascript asm.js

59
推荐指数
3
解决办法
2万
查看次数

JavaScript中是否存在整数类型?

我刚刚开始学习Javascript,我立即对Mozilla的重新引入JavaScript(JS教程)中看似矛盾的陈述感到困惑.

一方面:

" 在JavaScript中没有整数这样的东西,所以如果你习惯于用C或Java进行数学运算,你必须要小心算术."

另一方面(紧接该段后):

"实际上,整数值被视为32位整数(并在某些浏览器实现中以这种方式存储),这对于逐位运算非常重要."

"您可以使用内置的parseInt()函数将字符串转换为整数."

那么,JavaScript中存在整数这样的东西还是不存在?

javascript integer

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

静态和动态编程语言之间的区别

静态和动态编程语言有什么不同?我知道这完全是关于类型系统的,但我正在寻找更清晰的说明.

static type-systems programming-languages dynamic

34
推荐指数
2
解决办法
4万
查看次数

在创建对象时声明方法

为什么第一种方式是正确的,但第二种方式不是?


第一种方式:

new Object() {
    public void a() {
        /*code*/
    }
}.a();
Run Code Online (Sandbox Code Playgroud)

第二种方式:

Object object = new Object() {
    public void a() {
        /*code*/
    }
};

object.a();
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到更多相关信息?

java methods anonymous-inner-class object anonymous-class

29
推荐指数
2
解决办法
1103
查看次数

在泛型中使用类型变量

我有这个问题,除了Swift.如何Type在泛型中使用变量?

我试过这个:

func intType() -> Int.Type {
    return Int.self
}

func test() {
    var t = self.intType()
    var arr = Array<t>() // Error: "'t' is not a type". Uh... yeah, it is.
}
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

var arr = Array<t.Type>() // Error: "'t' is not a type"
var arr = Array<t.self>() // Swift doesn't seem to even understand this syntax at all.
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?我觉得Swift不支持它并且给我一些含糊不清的错误信息.

编辑:这是一个更复杂的例子,使用通用函数头无法规避问题.当然它没有意义,但我在我的代码中的某个地方明智地使用了这种功能,而宁愿发布一个干净的例子而不是我的实际代码:

func someTypes() -> [Any.Type] {
    var ret = [Any.Type]()
    for (var i = …
Run Code Online (Sandbox Code Playgroud)

generics swift

20
推荐指数
3
解决办法
2万
查看次数

动态编译语言与静态编译语言

Brian Goetz撰写本文的第一行让我在SO中发布这个问题.这又是一行:

为动态编译语言(如Java)编写和解释性能基准要比使用C或C++这样的静态编译语言困难得多.

我知道静态类型与动态类型语言答案.但动态编译语言与静态编译语言之间有什么区别?

c java compiler-construction programming-languages compilation

15
推荐指数
3
解决办法
9572
查看次数

带有typeid的逗号运算符

我正在研究一种通用的非侵入式智能指针实现.我在第4节中有些困惑.一个声明是

仅当结果类型是多态类类型的左值时,才计算作为typeid运算符的参数提供的表达式.

相关的示例代码是:

template<typename T>
  void* startOfObject(T* p) {
  void* q=static_cast<void*>(p);
  typeid(q=dynamic_cast<void*>(p),*p); // This line
  return q;
}
Run Code Online (Sandbox Code Playgroud)

AFAIU,它意味着q=dynamic_cast<void*>(p)如果结果类型多态类类型左值,则将对其进行评估.该结果意味着评价的结果dynamic_cast<void*>(p)(我想),所以dynamic_cast在任何情况下被应用.文章陈述(据我所知),如果p不是多态的dynamic_cast就不会应用,但为什么呢?在应用它之前,如何知道结果是否是多态的?如果有人详细描述了如何执行完整的语句,将会很有帮助.

另一种说法是

如果p为NULL也存在问题 - typeid将抛出std :: bad cast.

我看到的问题是取消引用,如果pNULL,而不是typeid(虽然它可能抛出bad_typeid,但这不是因为转换).dynamic_cast会返回一个NULL类型的指针void*,如果pNULL,而且typeid应该能够推断出类型的信息.这是一个错字,还是我错过了什么?

c++ dynamic-cast comma typeid

15
推荐指数
3
解决办法
681
查看次数

接口和抽象类的Python命名约定?

在Python中命名接口和抽象类的约定是什么?PEP 8没有讨论这个问题.例如,在Java中,接口通常以"I"前缀命名.在PHP(名称空间之前)中,抽象类通常以"_Abstract"后缀命名.

(我意识到Python主义者并不热衷于接口,也许这就是为什么我在这个主题上找不到多少共识的原因.但接口和抽象类的使用不是我的问题.)

python naming-conventions

7
推荐指数
4
解决办法
4989
查看次数