Questions tagged «static-typing»

在编译时(而不是在运行时)执行类型检查时,一种编程语言被称为使用静态类型。


30
接口与基类
什么时候应该使用接口,什么时候应该使用基类? 如果我不想实际定义方法的基本实现,是否应该始终是一个接口? 如果我有猫狗班。为什么我要实现IPet而不是PetBase?我可以理解具有用于ISheds或IBarks(IMakesNoise?)的接口,因为可以将它们逐个放置在每个宠物上,但是我不知道该为通用Pet使用哪个接口。


9
静态/动态与强/弱
我看到这些术语在编程中无处不在,我对它们的含义有一个模糊的概念。搜索显示我实际上已经在整个堆栈溢出中询问了此类问题。据我所知,语言中的静态/动态键入与强/弱键入有细微的区别,但是这种差异是我难以理解的。不同的来源似乎使用不同的含义,甚至可以互换使用这些术语。我找不到某个地方可以同时谈论这两者,并能说明差异。最好的是,如果有人可以在这里为我和世界其他地方清楚地说明这一点。


5
Java转换会带来开销吗?为什么?
当我们将一种类型的对象转换为另一种类型时,是否会有开销?还是编译器可以解决所有问题,并且在运行时没有成本? 这是一般的事情,还是有不同的情况? 例如,假设我们有一个Object []数组,其中每个元素可能具有不同的类型。但是我们始终可以肯定地知道,例如,元素0是Double,元素1是String。(我知道这是一个错误的设计,但是让我们假设我必须这样做。) Java的类型信息是否仍在运行时保留?还是编译后一切都被遗忘了,如果我们执行(Double)elements [0],我们将仅遵循指针并将这8个字节解释为double,无论是什么? 我不清楚在Java中如何完成类型。如果您对书籍或文章有任何建议,那么也谢谢。

7
TypeScript:类型系统问题
我只是在VisualStudio 2012中测试打字稿,并且打字稿系统有问题。我的html站点有一个id为“ mycanvas”的canvas标记。我正在尝试在此画布上绘制一个矩形。这是代码 var canvas = document.getElementById("mycanvas"); var ctx: CanvasRenderingContext2D = canvas.getContext("2d"); ctx.fillStyle = "#00FF00"; ctx.fillRect(0, 0, 100, 100); 不幸的是,VisualStudio抱怨 属性“ getContext”在类型“ HTMLElement”的值上不存在 它将第二行标记为错误。我以为这只是一个警告,但是代码无法编译。VisualStudio说 出现构建错误。您要继续并运行上一次成功的构建吗? 我根本不喜欢这个错误。为什么没有动态方法调用?毕竟,getContext方法肯定存在于我的canvas元素上。但是我认为这个问题很容易解决。我刚刚为画布添加了类型注释: var canvas : HTMLCanvasElement = document.getElementById("mycanvas"); var ctx: CanvasRenderingContext2D = canvas.getContext("2d"); ctx.fillStyle = "#00FF00"; ctx.fillRect(0, 0, 100, 100); 但是类型系统仍然不满意。这是新的错误消息,这次是在第一行: 无法将“ HTMLElement”转换为“ HTMLCanvasElement”:类型“ HTMLElement”缺少类型“ HTMLCanvasElement”的属性“ …

5
Scala中的类型归属的目的是什么?
规范中没有太多有关类型归属的信息,并且当然没有关于目的的任何信息。除了“使传递的varargs起作用”之外,我还要使用类型归属?以下是一些scala REPL,以了解使用它的语法和效果。 scala> val s = "Dave" s: java.lang.String = Dave scala> val p = s:Object p: java.lang.Object = Dave scala> p.length <console>:7: error: value length is not a member of java.lang.Object p.length ^ scala> p.getClass res10: java.lang.Class[_ <: java.lang.Object] = class java.lang.String scala> s.getClass res11: java.lang.Class[_ <: java.lang.Object] = …

2
在Julia中要求类型声明
有什么方法可以在Julia中明确要求(例如在模块或包中)必须声明类型 ?例如或是否支持这种检查?更广泛地说,Julia标准发行版本身是否提供任何静态代码分析器或等效工具可以帮助检查此要求? PackageCompilerLint.jl 举一个激励人的示例,假设我们要确保不断增长的生产代码库仅接受始终使用类型声明的代码,这是基于以下假设:带有类型声明的大型代码库往往更易于维护。 如果我们要强制执行该条件,Julia在其标准发行版中是否提供任何机制来要求类型声明或帮助实现该目标?(例如,是否可以通过短绒棉纸,提交钩子或类似的东西进行检查?)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.