问题标签 [dynamic-binding]

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 投票
3 回答
961 浏览

c++ - 编译时如何不知道对象类型?

我目前正在学习动态绑定和虚函数。这是来自 Accelerated C++,第 13 章:

[...] 我们希望在运行时做出决定。也就是说,我们希望系统根据传递给函数的对象的实际类型来运行正确的函数,这只有在运行时才知道。

我不明白对象的类型在编译时可能是未知的。从源代码中不是很明显吗?

0 投票
1 回答
365 浏览

asp.net-mvc - 如何使用动态绑定绑定无线电列表?

我想在我的控制器中绑定一个控件列表。

我对文本框、复选框或下拉菜单没有任何问题。

例如,

它们具有在我的控制器中动态绑定的相同名称。

如您所见,这些名称不一样

但我不能为广播组这样做。

它们必须具有相同的名称才能正确选择。

而且我无法将其绑定在列表中。

有任何想法吗 ?

0 投票
2 回答
1247 浏览

clojure - Clojure 中 with-local-vars 和 with-bindings 之间的区别

Clojure 的文档with-local-varswith-bindings不足以让我区分两者。有什么提示吗?

0 投票
3 回答
328 浏览

java - 为什么动态绑定和从父类调用子方法的不同设计?

我知道对于覆盖方法的情况,Java 遵循动态绑定。但是如果我们从父引用变量中调用一个子方法,它引用子对象,我们会得到编译错误。
为什么java遵循这种设计(即为什么在第二种情况下没有动态绑定)?

0 投票
9 回答
176627 浏览

java - 静态与。Java中的动态绑定

我目前正在为我的一个类做作业,在其中,我必须使用 Java 语法给出静态动态绑定的示例。

我了解基本概念,即静态绑定发生在编译时,动态绑定发生在运行时,但我无法弄清楚它们具体是如何工作的。

我在网上找到了一个静态绑定的例子,它给出了这个例子:

这会打印“动物正在吃东西”,因为调用callEat使用静态绑定,但我不确定为什么这被认为是静态绑定。

到目前为止,我所见过的任何资料都无法以我可以理解的方式解释这一点。

0 投票
3 回答
25295 浏览

c++ - C++中Vptr和Vtable的机制

在 C++ 中,在动态绑定期间,请考虑以下示例...

由于声明了虚拟关键字/动态绑定,上述函数的输出为“Derived”。

根据我的理解,将创建一个包含虚拟函数地址的虚拟表(Vtable)。在这种情况下,为派生类创建的虚拟表指向继承的 virtual fun()。并且bptr->fun()将得到解决bptr->vptr->fun();。这指向继承的基类函数本身。我不完全清楚派生类函数是如何调用的?

0 投票
1 回答
1734 浏览

wpf - 每行动态更新列表视图中的组合框项目源

我目前有一个带有 3 个组合框的 Listview 框。我从 sql 数据库中填充它们。对于每一行,我想让第三个组合框根据第二个组合框的选定值更改它的内容。

组合框将是:cmbx1(员工[jack, jill, tom, lisa]),cmbx2(产品[钢笔,铅笔,订书机]),cmbx3(颜色 - 将根据产品可用的颜色而动态变化)

产品和颜色选择:笔[红、蓝、黑];铅笔[黑、橙、红];订书机[粉色、青色、紫色、棕色]

如果对于第 1 行,用户选择了一支笔,那么只有该产品的可用颜色将列在该行的颜色组合框中。根据所选产品,下一行可能有不同的颜色选项。

这是可能的还是我应该找到另一种方法来实现结果?

这是目前拥有的...

后面的代码

谢谢!

0 投票
2 回答
927 浏览

java - 私有方法的动态绑定:Java vs. C++

这在 Java 中是不允许的:

它会产生一个编译错误:

但是,这在 C++ 中是允许的:

C++ 中这种行为背后的逻辑是什么?

0 投票
2 回答
632 浏览

java - Java 静态和动态绑定、向上转换、重载混合在一起

假设我们有以下代码

基本上,在 TestEqual 类(当然,扩展 Object)中,我们有一个从 Object 重载 equals 方法的方法。

此外,我们还有一些变量:Object t1、t2 实例化为 TestEqual、TestEqual t3 实例化为 TestEqual 和 Object o1 实例化为 Object。

如果我们运行程序,这将是输出。

这个例子似乎比通常的 Car c = new Vehicle(); 复杂一些。c.驱动器();因为我们调用方法的对象实例化与其类型不同,而且方法的参数实例化与其类型不同。

我想检查我是否正确理解了当我们调用每个方法时会发生什么,逐步关于绑定。

t1 被视为一个 TestEqual 对象。方法equals被重载,所以绑定是静态的,这意味着我们将t2作为一个Object传递,所以它会调用继承自Object超类的equals方法,所以它不会显示任何文本。

这似乎有点奇怪。我本来希望显示“In equals from TestEqual”,因为 t3 是一个 TestEqual 对象,所以应该调用来自 t1 的 equals。我在这里的解释是 t1 是静态绑定的并且被视为一个对象,因此调用从 Object 类继承的方法 equals ,参数 TestEqual t3 被向上转换为 Object。但这是否意味着 t1.equals(t2) 的先前解释是错误的?

t3 是一个TestEqual 对象,参数o1 是一个Object,所以调用了继承自Object 的equals 方法,所以什么也不打印。

t3 是一个TestEqual 对象,参数是一个TestEqual 对象,所以TestEqual 中的重载方法会被调用,打印“In equals from TestEqual”。

t3是一个TestEqual对象,由于静态绑定(方法重载),参数是一个Object,所以调用继承自Object的equal方法,什么也不打印。

0 投票
1 回答
376 浏览

scala - Scala中涉及抽象类型时没有动态绑定?

当我在 Martin Odersky 的Programming in Scala中尝试抽象类型的 Animal/Food 示例时,

我收到以下错误:

Martin 的原始示例是bessy.eat(new Fish),它肯定会失败,但我没想到它也会失败Grassbessy可以通过让beCow代替Animal:来避免上述错误val bessy:Cow = new Cow

这是否意味着动态绑定在这里不起作用?

编辑: Scala中常规继承的简单动态绑定:

我有这个,x:Parent也给了Child