问题标签 [construction]
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.
range - 范围构造模式
给定以下代码
是否有更简单、可能更实用、更高阶的模式来实现相同的目标?
一个好处是,如果可能的话,可能通过一些就地构造模式来最小化元素的复制。
更新:
好的,到目前为止,这是我的尝试:
例如,称为
还剩一个细节。限制
评估false
为
因为这里的 arity 实际上是 0 和 1。
所以在这种情况下arity!fun
评估为1
,因为Clock.currTime
采用默认参数。
也许我们arityMin
也需要arityMax
。std.traits
在那种情况下我应该使用__traits(compiles
来实现arityMin
吗?
syntax - 编译器构造中的语法分析过程
我现在正在看龙书。
在第 2 章中,它解释了语法分析过程。我正在努力理解这个过程的全貌。通过阅读本书,我有时会对语法分析器中的事情发生的顺序感到困惑。
所以根据我的理解:
语法分析器包含语法定义,该定义使用上下文无关语法定义语法。这基本上是语法分析器的“第一部分”吗?那么语法分析器是否包含语法定义?
之后,词法分析器生成的标记进入语法分析器。然后,语法分析器通过 CFG 检查字符串输入是否有效,生成解析树。
而且据我了解,这个解析树最终会变成一个(抽象的)语法树(它包含的细节比解析树少)。这棵树将进入语义分析器。
有人可以确认我对语法分析器的大致“整体情况”理解是否正确且顺序正确?
c++ - 如何在 C++ 中构造一个八叉树
我正在用 C++ 实现一个八叉树,它稍后应该包含一个用于渲染的网格。但目前我正在努力构建八叉树。更准确地说,导致问题的是 addNode() 函数。我想到了一个类似于二叉树的递归实现: Binary Tree implementation C++
但是,在八叉树中,每个节点都有 8 个儿子,而不仅仅是 2 个。此外,因此我不能像在二叉树中那样使用简单的开关(左/右)来决定在哪里添加节点。我需要检查 8 个儿子之一是否为空(指针为 NULL),如果没有指针为空,我需要使用其中一个儿子作为参数调用 add 函数。然而,这将导致一个八叉树,其中第一个儿子总是包含所有后续的子八叉树。这个 add 函数通常是如何实现的并避免了这个问题?
compiler-construction - 词法分析器:通过有限自动机实现正则表达式?
问候!
在阅读 Dragonbook 的第 3 章(词法分析)时,我几乎了解了所有内容(他们如何用正则表达式指定标记),直到他们开始谈论有限自动机。它似乎是描述词法分析器的重要部分。
现在我了解了有限自动机的概念,但我不了解它在词法分析器中的作用和用途?为什么不仅仅用正则表达式指定标记?
提前致谢。
c++ - 递归函数构建一个向量,会返回什么?
所以我试图递归地构建一个向量,当我看到这个时,我开始认为我做错了。以下代码是否会在每次迭代结果中返回一个向量,或者我只是在每次迭代中创建新向量,而实际上不会在每个递归调用上构建。如果我错了,我该如何递归地构建向量......提前感谢您的建设性帮助!
c++ - 当使用 operator=() 时使用 copy-ctor 的 C++ - 这究竟是如何工作的?
C++ 将 operator=() 赋值转换为构造的具体规则是什么?例如Foo foo = bar
实际上会调用 Foo 的构造函数,接受 bar 作为参数,如果它存在的话。我已经用谷歌搜索了它是如何工作的,但似乎找不到任何东西。
我无法弄清楚为什么下面的赋值尝试采用构造函数但没有采用明显正确的构造函数:HandlePtr(TYPE&resource)。使用实际构造语法的构造工作正常,但不适用于赋值运算符。
代码(显然为简洁而编辑):
错误:
c++ - 什么可能导致在构造孩子的过程中调用父母的析构函数?
enter code here
我在我的代码的一个奇怪部分看到了段错误,并且在使用 valgrind 之后,问题似乎是在构造孩子的过程中调用了父母的析构函数。这很奇怪,所以启动了 gdb,实际上,我看到调用了子对象的构造函数,调用了父对象的构造函数,然后在子构造函数退出之前调用了父对象的析构函数。我做了一个新的构建,看到了同样的事情。
我认为这是不可能的,并且正在发生一些有趣的事情,但我不知道那可能是什么,也不知道如何使用 gdb 来确定它是什么。Valgrind 只是在稍后告诉我,当我尝试使用父对象时,我正在执行无效读取,因为相关内存在子对象的构造过程中被删除!
很难打破有问题的代码来给出一个工作示例,但我可以尝试提供任何其他有用的细节。使用 gcc 4.7.2。
* 编辑 * 这是继承链的草图:
*进一步编辑*
我还要提到没有显式调用,delete
gdb回溯显示父析构函数正上方的调用是子构造函数,所以我不认为这是其他一些代码以某种方式清理它。
math - 构造传递函数
我将如何创建以下传递函数?
它需要两个参数:
- 范围内的凸起位置 (-1.0, +1.0)
- 凹凸锐度
该图片仅演示了第一个参数中的运动。
我可以想到几种可能的方法:
- 找出一个公式
- 贝塞尔曲线?
- 从几个点开始,进行某种链环式物理动力学模拟,其中每个环节都施加其邻居的力,末端环节保持低位,特定环节保持高位
- 类似于上面的东西,但从粗略的形状开始并滤除高频
但是,我看不到任何简单的方法来阐述上述任何一种方法。
谁能看到一个干净的方法来破解它?
java - Java - 内部私有类仅用于封装外部类的构造
这是拥有类的好习惯,即内部类(不是静态的),唯一的任务是构造和启动外部类的对象(在她的构造函数中)?此类的生命周期将等于外部类的构造函数的生命周期。
这是示例: