language-implementation相关内容

inspect.currentframe() 在某些实现下可能不起作用?

根据文档: inspect.currentframe() 返回调用者堆栈的框架对象框架. CPython 实现细节:此函数依赖于 Python 堆栈解释器中的框架支持,不保证存在于Python的所有实现.如果在没有的实现中运行Python栈帧支持这个函数返回None. 为什么只有这个函数被标记为“依赖于实现"?如果这个功能不起作用,是不是类似的功能,如inspect.tra ..
发布时间:2022-01-22 12:41:04 Python

java接口内部是如何实现的?(虚拟表?)

C++ 具有多重继承.在程序集级别实现多重继承可能相当复杂,但网上有很好的描述这通常是如何完成的(虚拟表、指针修复、thunk 等). Java 没有多重实现继承,但它有多重接口继承,所以我不认为每个类只有一个 vtable 的直接实现可以实现这一点.java内部是如何实现接口的? 我意识到与 C++ 不同,Java 是由 Jit 编译的,因此不同的代码片段可能会以不同的方式进行优化, ..
发布时间:2021-12-31 14:28:48 Java开发

为什么接口中的所有字段都是隐式静态和最终的?

我只是想了解为什么接口中定义的所有字段都是隐式static 和final.保持字段 static 的想法对我来说很有意义,因为您不能拥有接口的对象,但为什么它们是 final(隐式)? 有人知道为什么 Java 设计者要在接口 static 和 final 中创建字段吗? 解决方案 接口旨在指定交互契约,而不是实现细节.开发人员应该能够仅通过查看接口来使用实现,而不必查看实现它的类的 ..
发布时间:2021-12-31 14:21:13 Java开发

C++异常处理运行时是如何实现的?

我对 C++ 异常处理机制的工作原理很感兴趣.具体来说,异常对象存储在哪里以及它如何通过多个范围传播直到被捕获?它是否存储在某个全局区域? 由于这可能是特定于编译器的,有人可以在 g++ 编译器套件的上下文中解释这一点吗? 解决方案 实现可能会有所不同,但有一些遵循需求的基本思想. 异常对象本身是在一个函数中创建的对象,在其调用者中销毁.因此,在堆栈上创建对象通常是不可行的.另 ..
发布时间:2021-12-17 17:19:56 C/C++开发

Haskell 编译器是如何工作的?

我在哪里可以获得一些描述 Haskell 编译器实际工作方式的论文/文档/任何内容?我读了很多 GHC 的文档,但在头疼之后就停止了.因此,一些不需要博士学位就可以理解并且不是以您应该已经熟悉的风格编写的内容会更可取.如果它真的很长并且需要一些时间来理解它,那也不是问题. PS:最有趣的是关于 GHC,但一切皆有可能. 解决方案 从马嘴里得到答案!Simon Peyton Jones ..

在某些实现下,inspect.currentframe() 可能不起作用?

根据文档: inspect.currentframe() 返回调用者栈的帧对象框架. CPython 实现细节:此函数依赖于 Python 堆栈解释器中的框架支持,不能保证存在于Python 的所有实现.如果在没有的实现中运行Python 栈帧支持此函数返回 None. 为什么只有这个函数被标记为“依赖于实现"?如果这个功能不行的话,类似的功能,比如inspect.trac ..
发布时间:2021-08-28 18:36:07 Python

为什么 __FILE__ 大写而 __dir__ 小写?

在 Ruby 2.0.0-p0 中,引入了 __dir__ 变量以方便访问当前正在执行的文件的目录. 为什么 __dir__ 是小写的,而 __FILE__ 是大写的? 解决方案 我认为这是因为 __FILE__ 是一个解析时间常量而 __dir__ 是一个函数并返回File.dirname(File.realpath(__FILE__)) 有关详细信息,请参阅此讨论 ..
发布时间:2021-07-11 18:55:25 其他开发

私有内部类合成了意想不到的匿名类

当您使用私有内部类编译 Java 类时,似乎出于某种原因会自动合成一个匿名类.这个类足以重现它: 公共类 SynthesizeAnonymous {公共静态无效方法(){新的内部类();}私有静态类 InnerClass {}} 编译时,这会生成预期的 SynthesizeAnonymous.class 和 SynthesizeAnonymous$InnerClass.class 文件,但也会 ..
发布时间:2021-06-21 19:31:58 Java开发

实现JavaScript内部方法的源代码

有没有办法查看JavaScript方法背后的代码?不是网站.html或.js文件中的javascript方法,而是JavaScript的内部方法. 例如: 如何查看JavaScript如何计算元素的 offsetTop ? 解决方案 JavaScript由浏览器实现,因此取决于浏览器. Google的浏览器 Chrome 是在AskUbuntu上 您可以在此处进 ..
发布时间:2021-05-19 20:25:31 前端开发

python在哪里存储全局和局部变量?

与问题几乎相同,是否存储了本地,全局,静态,自动,寄存器,外部,常量,易失性变量?,不同之处在于该线程在问Python语言如何实现这一点. 解决方案 在所有这些中,Python仅具有“局部",“全局"和“非局部"变量. 其中一些存储在字典或类似对象的字典中,通常可以对其进行明确寻址. “全局" :实际上,“全局"变量相对于定义它们的模块是全局的-有时将它们称为“模块级"变量,而 ..
发布时间:2020-11-27 05:12:16 Python

将Python传递给函数时,为什么要在生成器中省略括号?

我只是在用不同的语法在Python中进行实验,以将生成器作为函数的参数传入,我意识到尽管我一直在这样做, >>> sum((j for j in xrange(5))) 10 这同样有效: >>> sum(j for j in xrange(5)) 10 这已在Linux上的Python 2.6.6上进行了测试.到底发生了什么事?只是语法糖吗?毕竟,通常情况下,未解释的生成器对 ..
发布时间:2020-11-13 03:20:30 Python

C ++中char整数值的范围

我正在阅读 C ++编程语言,其中Stroustrup指出char的int值范围可以从0到255或-127到127,具体取决于实现方式。这样对吗?似乎应该在-128到127之间。如果没有,为什么在第二个实现可能性中它们只有255个可能的值,而不是256个。 解决方案 您陷入了二进制补码的思考-C ++标准 如果您的计算机(禁止使用上帝)使用一个人的补语代表负数,您在8位字节中的范围是 ..
发布时间:2020-09-27 01:21:43 C/C++开发

了解memcpy()的实现

我在寻找memcpy.c的实现,发现了另一个memcpy代码.我不明白为什么他们要这样做(((ADDRESS)s)|((ADDRESS)d)| c)& (sizeof(UINT)-1) #if !defined(__MACHDEP_MEMFUNC) #ifdef _MSC_VER #pragma function(memcpy) #undef __MEMFUNC_ARE_INLINED # ..
发布时间:2020-05-08 18:47:37 其他开发

Lua:了解表数组部分和哈希部分

在表的第4部分中, Lua 5.0的实现中有一个示例: local t = {100, 200, 300, x = 9.3} 所以我们有t[4] == nil.如果我写t[0] = 0,它将转到哈希部分. 如果我写t[5] = 500它会去哪里? 数组部分还是哈希部分? 如果有区别,我很想听听Lua 5.1,Lua 5.2和LuaJIT 2实施的答案. 解决方案 从1开始的连续 ..
发布时间:2020-05-04 06:49:46 其他开发

Python:列表理解背后的机制

在for循环上下文中使用列表理解或in关键字时,即: for o in X: do_something_with(o) 或 l=[o for o in X] in背后的机制如何工作? 它调用X中的哪些函数\方法? 如果X可以遵循多种方法,那么优先级是多少? 如何编写高效的X,以便快速理解列表? 解决方案 答案是正确的. for在for循环和列表推导中 ..

JavaScript中的Lisp宏引用实现

我有 JavaScript中像lisp这样的基本方案,并且反引号有问题并引用宏,它们会评估符号是否位于数组的第一个元素(如 ) > `(foo 10) 给出错误foo not found 适用于这样的代码 > (define x '(1 2 3)) > (print `(1 2 ,@x 4 5)) 我的评估函数看起来像这样: function evaluate(cod ..
发布时间:2020-05-02 04:38:47 前端开发