language-design相关内容
哪些语言(如果有)支持语法: a
..
#include struct A { int n; auto operator(A const& other) const { if (n
..
我刚刚在 JavaScript 中遇到了一个有趣的情况.我有一个类,其方法使用对象文字表示法定义多个对象.在这些对象中,正在使用 this 指针.从程序的行为中,我推断出 this 指针指的是调用该方法的类,而不是由字面量创建的对象. 这似乎是任意的,尽管这是我期望它工作的方式.这是定义的行为吗?跨浏览器安全吗?是否有任何理由说明为什么它超出了“规范所说的"(例如,它是一些更广泛的设计决策/
..
..
我在此演示文稿中读到 http://golang.org/doc/ExpressivenessOfGo.pdf第 42 页: 安全 - 没有堆栈溢出 这怎么可能?和/或 Go 如何避免这种情况? 解决方案 这是一个叫做“segmented stacks"的特性:每个goroutine都有自己的栈,在堆上分配. 在最简单的情况下,编程语言实现对每个进程/地址空间使用一
..
VB 有运算符 AndAlso 和
..
Dim 在 Visual Basic 中代表什么? 解决方案 Dim 最初(在 BASIC 中)代表 Dimension,因为它用于定义数组的维度. (BASIC 的原始实现是 Dartmouth BASIC,它源自 FORTRAN,其中DIMENSION 已详细说明.) 现在,Dim 被用来定义任何变量,而不仅仅是数组,所以它的含义不再直观.
..
来自 python 维基 多元素元组 在 Python 中,多元素元组如下所示: 1,2,3 ... 但同样,定义元组的是逗号,而不是括号. 哦,真的吗?! 那为什么: >>>tuple(((((((1, 2, 3)))))) # 创建一个有效的元组# (1, 2, 3)>>>tuple(1, 2, 3, ) # 但不是这里# TypeError: tu
..
我正在设计一种语言,并试图决定 true 应该是 0x01 还是 0xFF.显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示. 每种选择的优缺点是什么? 解决方案 0 为假,因为处理器有一个标志,当寄存器设置为零时设置. 没有对任何其他值(0x01、0xff 等)设置其他标志 - 但当寄存器中有非零值时,零标志设置为 false. 因此,这里提倡将 0
..
刚刚偶然发现一个失败的断言,因为它将 false 与函数的返回类型进行比较,因为函数本身返回了一个布尔值,并且断言不仅检查了值,还检查了返回值的类型以匹配那个为假,以保证返回一个布尔值.现在的问题是,C99 将 bool 定义为 _Bool 并且 _Bool 甚至不一定与 int 大小相同(实际上,根据我的经验,在当今的大多数平台上,它通常与 unsigned char 大小相同),更不用说相同了
..
我刚刚注意到 Array 并没有覆盖三等号方法 ===,它有时被称为大小写相等方法. x = 2案例 x当 [1, 2, 3] 然后“匹配"否则“不匹配"结束# =>“不匹配" 而范围运算符是: x = 2案例 x当 1..3 然后“匹配"否则“不匹配"结束# =>“比赛" 但是,您可以为数组做一个解决方法: x = 2案例 x当 *[1, 2, 3] 然后“匹配"否则“不匹配"结束#
..
使用以下代码: 案例“GETSITES":案例“站点设置":MessageBox.Show("救命!我正遭受空调噩梦的折磨!!!");//... MessageBox.Show 是否会被执行,开关值是 "GETSITES" 还是 "SITESETUP"? 或仅如果开关值为“SITESETUP"? 由于 "GETSITES" 没有中断,我想是的,但不确定. 更新 我想我应
..
我只是想知道为什么 Java 7 switch 语句不支持 null 情况而是抛出 NullPointerException?请参阅下面的注释行(示例取自 关于 的 Java 教程文章切换): {字符串月份 = null;开关(月){案例“一月":月数 = 1;休息;案例“二月":月数 = 2;休息;案例“三月":月数 = 3;休息;//情况为空:默认:月数 = 0;休息;}返回月份数;} 这
..
以下是 Sun 的 Java 教程的摘录:p> 开关适用于 byte、short、char 和 int 原始数据类型.它也适用于枚举类型(在类和继承中讨论)和一些“包装"某些原始类型的特殊类:Character、Byte、Short 和 Integer(在简单数据对象中讨论). long 原始数据类型不允许使用一定有充分的理由.有人知道是什么吗? 解决方案 我认为在某种程度上这可能
..
我是否有遗漏 case 语句中的块不被视为块级声明空间的原因? 我在尝试时不断收到错误(变量已被声明) 案例 x:var someVariable = 42;休息;案例 y:var someVariable = 40;休息; 但我可以做到 案例 x:尝试{var someVariable = 42;}catch{}休息;案例 y:尝试{var someVariable = 40;}ca
..
为什么编译器不自动在 switch 中的每个代码块之后放置 break 语句?是因为历史原因吗?您希望何时执行多个代码块? 解决方案 有时将多个案例关联到同一个代码块会很有帮助,例如 案例'A':案例“B":案例“C":做一点事();休息;案例“D":案例“E":doSomethingElse();休息; 等等.只是一个例子. 根据我的经验,“失败"并为一个案例执行多个代码块通常
..
有点相关 为什么调用复制构造函数而不是转换构造函数? 初始化有两种语法,直接初始化和复制初始化: A a(b);A = b; 我想知道他们有不同定义行为的动机.对于副本初始化,涉及到一个额外的副本,我想不出那个副本有什么用途.由于它是临时副本,因此可以并且可能会对其进行优化,因此用户不能依赖它的发生-因此,额外的副本本身不足以引起不同的行为.那么……为什么? 解决方案 由于它
..
我在编译器类,我们的任务是从头开始创建我们自己的语言.目前我们的困境是是否包含“null"类型.null 提供什么目的?我们团队中的一些人认为这不是绝对必要的,而其他人则支持 null 只是因为它可以提供额外的灵活性. 你有什么想法,特别是支持或反对null?您是否曾经创建过需要 null 的功能? 解决方案 空:十亿美元的错误.托尼·霍尔: 我称之为我的十亿美元错误.这是 n
..
Andrei Alexandrescu 在 现代C++设计: typeid 返回的对象有静态存储,所以你不必担心终身问题. 安德烈继续: 标准不保证每次调用,比如说,typeid(int)返回相同的引用type_info 对象. 虽然标准不保证这一点,但在 GCC 和 Visual Studio 等常见编译器中是如何实现的? 假设 typeid 没有泄漏(并且每次调用
..
这是一个语言设计问题: 您认为无法访问的代码(在一般编程语言中)是否应该引发警告(即“报告问题并继续编译")或错误(“拒绝编译")? 我个人强烈认为这应该是一个错误:如果程序员编写一段代码,它应该总是打算在 some 场景中实际运行它.但例如 C# 编译器似乎不同意这一点,只报告一个警告. 注意:我意识到好的死代码检测是一个非常困难的问题,但这不是这个问题的重点. 以下是一
..