调用点解释?(Call-site explanation?)

2019-07-29 16:51发布

scaning其以简单的方式很难理解互联网,即时通讯-术语调用点(@dlr)。 香港专业教育学院在读这里是调用点是:

一个网站说

在其中,该方法被称为位置。

一书中说:

调用点。 这是排序DLR的原子的 - codewhich的最小的一块可以被认为是单个单元。 一个表达式可以包含很多调用点,但在自然的方式建立起来的behavioris,以时间来评估一个调用点。 对于讨论的其余部分,我们onlyconsider在一次一个调用点。 这将是有用的调用点,指的是一个小例子,所以这里是一个非常简单的一个,其中d是当然的动态类型的变量

d.Foo(10); 呼叫站点代码为System.Runtime.CompilerServices.CallSite表示。

另一本书说:

编译器生成代码,以在最后描述的操作,通过该DLR将在运行时绑定调用点管理的表达式树。 呼叫网站基本上是作为主叫方和被叫方之间的中介。

对不起,我不能看到这3个解释组合成一个简单的解释。

我会很乐意得到一个简单的解释:

我怎么解释我的妻子 - 什么是呼叫的网站?

Answer 1:

第一种解释无关与DLR或动态类型:简单的讲,一个调用的位置是在源代码中调用方法时的位置(或网站)。

在实施动态类型,有必要存储有关包含在你的代码中的动态方法调用的信息,这样他们就可以在运行时(DLR的需要查找的方法,解决重载等)被调用。 似乎天生就是代表该信息的对象也应该被称为“调用点”。



Answer 2:

好吧,这是我怎么看它。

对于这个例子呼叫仅仅是这样一些执行代码并返回的方法或函数。

对于静态语言运行时程序(C,或CLR等)调用位置基本上是其中一个函数调用发生。 这是该呼叫将在正常(非例外)流回到位置。 由于这是一个静态的程序调用点是一个简单的存储位置,压入堆栈。

对于动态语言程序(红宝石,巨蟒等),您呼叫的代码不工作,直到运行时。 这意味着需要某种形式的逻辑来管理作出正确的函数调用,然后在调用后清理(如果需要)的过程。 如果动态语言程序是基于.NET 4,这是使用DLR(动态语言运行时)类型System.Runtime.CompilerServices.CallSite的对象来完成。 因此,呼叫将返回到调用点对象中的一个方法,然后在原来的呼叫的位置。

所以答案是,这取决于你怎么做的调用和你所使用的平台。



文章来源: Call-site explanation?