问题标签 [dynamic-typing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
887 浏览

javascript - 多态内联缓存如何与可变类型一起使用?

多态内联缓存(PIC)通过按对象类型缓存实际方法来工作,以避免昂贵的查找过程(通常是哈希表查找)。

如果类型对象是可变的(即该方法可能在运行时被猴子修补成不同的东西),如何处理类型比较?

我想出的一个想法是一个“类计数器”,每次调整方法时都会增加,但是这似乎在一个猴子补丁严重的环境中会异常昂贵,因为它会杀死所有的图片那个类,即使它们的方法没有改变。

我确信必须有一个好的解决方案,因为这个问题直接适用于 JavaScript,并且 AFAIK 所有三个大型 JavaScript 虚拟机都有 PIC。

0 投票
5 回答
555 浏览

c#-4.0 - 有没有一种融合了动态类型和强类型优势的理想语言?

我有兴趣学习一种在内部将对象处理为哈希表(如 JavaScript)但可以用强类型包装它们以在设计时提供代码完成/智能感知的好处的语言。以下是我希望这种梦幻语言发挥作用的方式:

我希望这个程序能够无误编译、无异常运行并在控制台上打印 “Miauew”。有没有一种语言可以做到这一点?也许是 C#4.0?

0 投票
2 回答
1855 浏览

objective-c - Objective-C 中的动态类型和返回值

我遇到了一个非常奇怪的行为,我无法理解。我有一个Texture具有contentWidthtype 属性的类int。这个类被包装在一个Image具有widthtype 属性的类中int。的简单地计算为width底层纹理的 :ImagecontentWidth

现在ImageButton想要读取图像大小的类(通过组合,而不是继承)使用:

问题是height变量设置得很好,而width变量包含NaN(–2147483648)。我检查了尺寸——它们大约是 200×100 左右,远未达到int极限。Xcode 调试器工具提示也Texture正确显示了这两个属性,只有在宽度通过两个访问器后,数字才会出现乱码。对象没有被释放。我错过了什么?


更新:我已经扩展了Image类中的访问器以查看问题的根源:

现在,当我在第一行中断时,w设置正确。我跳过,执行返回到调用函数:

…现在bar包含NaN.


更新:嗯,明白了:

image声明为id,这就是这里的重点。有人可以解释一下吗?我有一种感觉,我没有调用正确的width方法,但这里到底发生了什么?我总是尽可能严格地键入我的变量,但这里的id类型很方便。我不知道它会导致这样的错误。

0 投票
3 回答
364 浏览

c# - 为什么 C# 4.0 中使用的 COM 库需要大量使用动态类型?

在 C# 4.0 演示中,我看到很多使用动态类型的代码。例如,以下代码设置 Excel 单元格的值:

excel.Cells[1, 1].Value = ...

但是,您也可以使用强制转换以早期绑定方式访问单元:

((范围)excel.Cells[1, 1]).Value = ...;

为什么 Excel COM 库不首先将 Cell 类型描述为 Range 类型?同样,以下方法的所有参数都是动态的:

excel.ActiveWorkbook.Charts.Add(...)

为什么论点不能是静态的?查看 Excel 对象模型,到处都有动态类型。这是由于 COM 表达能力的限制吗?在 COM 库中使用动态类型而不是静态类型时是否存在模式?

0 投票
7 回答
6911 浏览

language-design - 为什么动态类型经常与解释语言相关联?

简单的问题:我用 C++/Java 等编译语言和 Python/Javascript 等解释语言做了很多编程(专业和个人)。我个人发现,当我使用静态类型语言进行编程时,我的代码几乎总是更加健壮。但是,我遇到的几乎所有解释语言都使用动态类型(PHP、Perl、Python 等)。我知道为什么编译语言使用静态类型(大部分时间),但我无法弄清楚解释语言设计中对静态类型的厌恶。

为什么陡峭的断开连接?它是解释语言本质的一部分吗?哎呀?

0 投票
4 回答
2729 浏览

java - ruby 中的对象引用类型

我是 Ruby 新手,目前正在尝试我用作指南的 Ruby 书中的一些示例:

这是一个非常简单的示例,在同一个脚本文件中包含两个类。我对传递给 credit 和 debit 方法的参数类型感到困惑。来自 Java,我仍然在考虑类型,所以很明显,我传递给的帐户变量的类型,比如借方方法,必须是 Account 类型。

由于 ruby​​ 是动态类型的并且不检查类型,我如何安全地对我传递的参数进行操作,并通过以下方式定义方法的其余部分: account.balance -+ amount ?

我想了解,如果我将对帐户以外的对象的引用传递给借方方法,会有什么样的安全性?

当定义以下方法的主体时,它使用给定的参数帐户。现在,我想我在重复自己,因为我仍然无法理解这个想法......我怎样才能使用参数帐户(可以是任何类型,因为没有人在检查)并使用点建立一些逻辑运算符,询问其实例变量,或调用其其他方法,并对可能或可能不是正确种类(或类型)的对象执行计算?当然,隐含地,我希望它是 Account 类型。

另外,如果我在不同的文件中声明这两个类,相同的示例将如何工作?

为新手问题提前诚挚道歉,我只是发现很难将我的思想包裹在动态类型上——或者更好的是,没有类型检查。这本书要么对此有点含糊,要么我无法通过仅用Java思考来动摇我的视野。

任何实际的解释将不胜感激。

0 投票
17 回答
519191 浏览

programming-languages - 静态类型语言和动态类型语言有什么区别?

我经常听到新的编程语言是动态类型的,但是当我们说一种语言是动态类型的还是静态类型的时,这实际上意味着什么?

0 投票
2 回答
2351 浏览

java - 如何在 Java 中动态创建类型实例

在我的 Java 应用程序中,我有方法

在这个方法内部,我需要创建一个扩展Transaction的对象T的实例

这样做是否正确

0 投票
1 回答
244 浏览

java - CLR 和 JVM 中动态类型的不同方法

.NET 4.0 引入了对动态类型对象调度调用的新支持。据我所知,这涉及:

  • CLR 没有变化
  • BCL 中的新类型
  • 将新语法转换为新类型用法的新编译器

在 Java 领域,人们正在讨论向 JVM添加新的dynamicinvoke字节码,以便在中间语言抽象之后由 JIT 处理分派。

Java 方法得到了许多重要方面的支持。

这些似乎是两种根本不同的方法。各自的优点是什么,为什么两个阵营选择走不同的道路?我对这两种解决方案的灵活性和运行时性能特别感兴趣。两个虚拟机最终都试图实现相同的目标吗?

0 投票
2 回答
189 浏览

static-typing - 是否有针对严格打字系统的“日益增长的反叛”的引文?

Go 语言常见问题解答明确提出了以下要求:

对 Java 和 C++ 等笨重的类型系统的反抗越来越强烈,促使人们转向动态类型语言,如 Python 和 JavaScript。

是否有(非轶事)数据实际支持这种说法?我一直觉得动态打字很草率而且很烦人,但如果我失去联系,我至少想要一些警告。