language-design相关内容

“这"是怎么回事?关键字在函数中起作用?

我刚刚在 JavaScript 中遇到了一个有趣的情况.我有一个类,其方法使用对象文字表示法定义多个对象.在这些对象中,正在使用 this 指针.从程序的行为中,我推断出 this 指针指的是调用该方法的类,而不是由字面量创建的对象. 这似乎是任意的,尽管这是我期望它工作的方式.这是定义的行为吗?跨浏览器安全吗?是否有任何理由说明为什么它超出了“规范所说的"(例如,它是一些更广泛的设计决策/ ..
发布时间:2022-01-29 23:25:37 前端开发

为什么 Go 没有 stackoverflows

我在此演示文稿中读到 http://golang.org/doc/ExpressivenessOfGo.pdf第 42 页: 安全 - 没有堆栈溢出 这怎么可能?和/或 Go 如何避免这种情况? 解决方案 这是一个叫做“segmented stacks"的特性:每个goroutine都有自己的栈,在堆上分配. 在最简单的情况下,编程语言实现对每个进程/地址空间使用一 ..

DIM 在 Visual Basic 和 BASIC 中代表什么?

Dim 在 Visual Basic 中代表什么? 解决方案 Dim 最初(在 BASIC 中)代表 Dimension,因为它用于定义数组的维度. (BASIC 的原始实现是 Dartmouth BASIC,它源自 FORTRAN,其中DIMENSION 已详细说明.) 现在,Dim 被用来定义任何变量,而不仅仅是数组,所以它的含义不再直观. ..
发布时间:2022-01-20 18:46:29 其他开发

布尔真 - 正 1 或负 1?

我正在设计一种语言,并试图决定 true 应该是 0x01 还是 0xFF.显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示. 每种选择的优缺点是什么? 解决方案 0 为假,因为处理器有一个标志,当寄存器设置为零时设置. 没有对任何其他值(0x01、0xff 等)设置其他标志 - 但当寄存器中有非零值时,零标志设置为 false. 因此,这里提倡将 0 ..
发布时间:2022-01-19 17:28:39 其他开发

C99 - 为什么将 false 和 true 定义为 0 和 1 而不是 ((bool)0) 和 ((bool)1)?

刚刚偶然发现一个失败的断言,因为它将 false 与函数的返回类型进行比较,因为函数本身返回了一个布尔值,并且断言不仅检查了值,还检查了返回值的类型以匹配那个为假,以保证返回一个布尔值.现在的问题是,C99 将 bool 定义为 _Bool 并且 _Bool 甚至不一定与 int 大小相同(实际上,根据我的经验,在当今的大多数平台上,它通常与 unsigned char 大小相同),更不用说相同了 ..
发布时间:2022-01-19 17:13:09 其他开发

为什么 Array 不覆盖 Ruby 中的三等号方法?

我刚刚注意到 Array 并没有覆盖三等号方法 ===,它有时被称为大小写相等方法. x = 2案例 x当 [1, 2, 3] 然后“匹配"否则“不匹配"结束# =>“不匹配" 而范围运算符是: x = 2案例 x当 1..3 然后“匹配"否则“不匹配"结束# =>“比赛" 但是,您可以为数组做一个解决方法: x = 2案例 x当 *[1, 2, 3] 然后“匹配"否则“不匹配"结束# ..
发布时间:2022-01-19 11:03:37 其他开发

为什么 String switch 语句不支持 null 情况?

我只是想知道为什么 Java 7 switch 语句不支持 null 情况而是抛出 NullPointerException?请参阅下面的注释行(示例取自 关于 的 Java 教程文章切换): {字符串月份 = null;开关(月){案例“一月":月数 = 1;休息;案例“二月":月数 = 2;休息;案例“三月":月数 = 3;休息;//情况为空:默认:月数 = 0;休息;}返回月份数;} 这 ..
发布时间:2022-01-19 10:31:44 Java开发

为什么你的 switch 语句数据类型不能很长,Java?

以下是 Sun 的 Java 教程的摘录:p> 开关适用于 byte、short、char 和 int 原始数据类型.它也适用于枚举类型(在类和继承中讨论)和一些“包装"某些原始类型的特殊类:Character、Byte、Short 和 Integer(在简单数据对象中讨论). long 原始数据类型不允许使用一定有充分的理由.有人知道是什么吗? 解决方案 我认为在某种程度上这可能 ..
发布时间:2022-01-19 10:24:51 Java开发

C# 中的 Case 语句块级声明空间

我是否有遗漏 case 语句中的块不被视为块级声明空间的原因? 我在尝试时不断收到错误(变量已被声明) 案例 x:var someVariable = 42;休息;案例 y:var someVariable = 40;休息; 但我可以做到 案例 x:尝试{var someVariable = 42;}catch{}休息;案例 y:尝试{var someVariable = 40;}ca ..
发布时间:2022-01-19 10:21:54 C#/.NET

为什么我们在 case 语句之后需要 break?

为什么编译器不自动在 switch 中的每个代码块之后放置 break 语句?是因为历史原因吗?您希望何时执行多个代码块? 解决方案 有时将多个案例关联到同一个代码块会很有帮助,例如 案例'A':案例“B":案例“C":做一点事();休息;案例“D":案例“E":doSomethingElse();休息; 等等.只是一个例子. 根据我的经验,“失败"并为一个案例执行多个代码块通常 ..
发布时间:2022-01-19 10:11:45 Java开发

复制和直接初始化行为不同的动机是什么?

有点相关 为什么调用复制构造函数而不是转换构造函数? 初始化有两种语法,直接初始化和复制初始化: A a(b);A = b; 我想知道他们有不同定义行为的动机.对于副本初始化,涉及到一个额外的副本,我想不出那个副本有什么用途.由于它是临时副本,因此可以并且可能会对其进行优化,因此用户不能依赖它的发生-因此,额外的副本本身不足以引起不同的行为.那么……为什么? 解决方案 由于它 ..
发布时间:2022-01-18 23:26:26 C/C++开发

空的目的是什么?

我在编译器类,我们的任务是从头开始创建我们自己的语言.目前我们的困境是是否包含“null"类型.null 提供什么目的?我们团队中的一些人认为这不是绝对必要的,而其他人则支持 null 只是因为它可以提供额外的灵活性. 你有什么想法,特别是支持或反对null?您是否曾经创建过需要 null 的功能? 解决方案 空:十亿美元的错误.托尼·霍尔: 我称之为我的十亿美元错误.这是 n ..

typeid 什么时候可以为同一类型返回不同的 type_info 实例?

Andrei Alexandrescu 在 现代C++设计: typeid 返回的对象有静态存储,所以你不必担心终身问题. 安德烈继续: 标准不保证每次调用,比如说,typeid(int)返回相同的引用type_info 对象. 虽然标准不保证这一点,但在 GCC 和 Visual Studio 等常见编译器中是如何实现的? 假设 typeid 没有泄漏(并且每次调用 ..
发布时间:2022-01-17 08:26:41 C/C++开发

无法访问的代码:错误还是警告?

这是一个语言设计问题: 您认为无法访问的代码(在一般编程语言中)是否应该引发警告(即“报告问题并继续编译")或错误(“拒绝编译")? 我个人强烈认为这应该是一个错误:如果程序员编写一段代码,它应该总是打算在 some 场景中实际运行它.但例如 C# 编译器似乎不同意这一点,只报告一个警告. 注意:我意识到好的死代码检测是一个非常困难的问题,但这不是这个问题的重点. 以下是一 ..