问题标签 [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.

0 投票
1 回答
204 浏览

java - 基于 Java 模板的字符串构造工具

我正在尝试重构一些遗留代码。这里的任务是基于一些看起来像这样的预定义模板构造冗长的消息/字符串:

然后我收到了一个包含所有这些字段的 java 对象。这里需要做的只是从对象字段中获取数据,并使用它们基于模板构造一个长消息/字符串。其中一些字段也可以根据一些简单的规则进行转换。例如:

因此,我们需要不时检查这些字段的值。还有关于填充的规则(主要是在右侧添加空格)。因此,构造的消息/字符串可能如下所示:

目前我们只是在使用残酷的武力来完成这项工作。首先,我们将模板输入到 ArrayList 中,每个元素都是一行,例如“field1,8,String”。在实际的消息构造过程中,我们循环遍历这个 ArrayList,然后将数据填充到一个 StringBuffer 中。这是一些示例片段

如您所见,尽管它很可怕,但它可以完成工作。但是这样的代码容易出错,并且难以维护。我想知道你们是否有任何工具或库或一些优雅的解决方案可以推荐。
非常感谢!华

0 投票
1 回答
43 浏览

optaplanner - DefaultConstructionHeuristicPhase - workingScoreHolder 持有不接受移动的无效分数

我基于 optaplanner 7.4.1 构建了一个 VRP 解决方案。使用默认构造启发式“FIRST_FIT_DECREASING”。在我现在可以看到的ConstructionHeuristicDecider中,在decisionNextStep方法结束时,选择了一个步骤并将其返回给DefaultConstructionHeuristicPhase的solve方法。一切都好。这一步的得分是可以的,但是在求解循环中的下一个位置现在从decisionNextStep的移动循环中最后检查的移动的得分开始,而不是选择的移动的得分。

因此,如果在第一步中选择了分数“init:-157/hard:0/soft:-2100”,他现在将根据最后检查的分数开始第一次计算(例如“init:-157/hard:-111” /软:-2200”)。由于第二步的初始分数较低,并且没有触及硬约束,因此在 ConstructionHeuristicDecider 的第一个“addMove”调用中添加了一个无效分数(第二步的第一步根本不应该有硬分数) .

我认为核心问题是这样一个事实,即在 DroolsScoreDirector calculateScore 中调用“kieSession.fireAllRules()”时,workingScoreHolder 仍然保留最后检查的,但不接受上一步最后一步的分数。有谁知道如何处理这个问题?

附加信息:也许另一种方法可能是在执行undoMove之后检查ConstructionHeuristicDecider的doMove中是否不应该将workingScoreHolder重置为执行原始移动之前的分数。据我了解,移动的评分是在 processmove 中明确完成的。之后,执行撤消移动后不会重新计算工作分数。所以分数和解决方案在那个时刻是不同步的。

问候, 弗兰克

0 投票
1 回答
45 浏览

python - 是否有一种 Pythonic 方式来创建克隆项目列表?

考虑以下代码:

这段代码的问题是所有 5 个项目都some_list引用SomeClass. 如果我这样做了some_list[0].foo = 7,那么我就some_list[1].foo等于7,等等。

那么如何在一个列表中实例化N不同的实例呢?SomeClass

0 投票
4 回答
212 浏览

c++ - 多次调用构造函数会改变C++中的成员指针地址

我写了一个程序检查类创建的init过程,发现多次调用构造函数改变了成员指针地址。看下面的片段。

输出是

似乎FF()只在其空间中调用了将ptr初始化为NULL,调用后ptr又变回了原来的0x400b40。

有人可以解释一下吗?

0 投票
1 回答
45 浏览

c++ - C++11 目标构造函数是否允许我从模板构造函数安全地初始化派生类?

我有各种从模板类栏(下)创建的对象。每个对象都有一个具有不同数据类型的数据成员(例如 std::string、bool、int 等)

我在一个静态数组中有一组当前默认值,每个派生/模板化类型都是通过 new 构造的。

我想在构造函数中初始化对象,而不需要单独的初始化步骤。

我可以确定我从静态数组中检索的默认对象的类型绝对是 SAME 模板化类型。

我想我遇到的问题是,在构造函数完成之前,对象栏并不是真正的对象栏类型?在 C++11 中没有办法使用目标或委托构造函数来解决这个问题吗?

0 投票
2 回答
8577 浏览

java - 在构造调用期间将 Java 枚举放在静态映射中是否安全?

如标题所示,我有以下内容Enum

我想知道是否放置一个其实例化/构造尚未完成的枚举可能会导致问题?

0 投票
3 回答
1899 浏览

haskell - 在 Haskell 广度优先中构建二叉树(不是 BST)

我最近开始使用 Haskell,可能会持续一段时间。只是被要求使用它来更好地理解我在 Uni 上的一门课程的函数式编程。

现在我有一个小问题,我目前正在尝试做的事情。我想以广度优先构建它,但我认为我的条件搞砸了,或者我的条件也错了。

所以基本上如果我给它 [“A1-Gate”, “North-Region”, “South-Region”, “Convention Center”, “Rectorate”, “Academic Building1”, “Academic Building2”]and [0.0, 0.5, 0.7, 0.3, 0.6, 1.2, 1.4, 1.2],我的树应该像

我试图实现的树布局

但是我的试运行结果不是我预期的哈哈。因此,Haskell 的一位特别敏锐的专家可能会帮助我发现我做错了什么。输出:

A-1 Gate 应该是根,但它最终成为一个没有孩子的孩子,所以条件非常混乱。

如果我能得到一些指导,那会有所帮助。以下是我到目前为止所写的内容:

感谢您提供的任何指导。是的,我已经查看了一些类似的问题,但我确实认为我的问题有所不同,但如果您认为某个帖子有一个明确的答案,这将有助于我愿意去看看它。

0 投票
4 回答
487 浏览

scala - 在函数式编程中反序列化二叉树广度优先

我有一个命令式程序,它从数组反序列化为二叉树。它是一种 BFS 算法。我想知道如何在 Scala 中使用函数式编程概念来做到这一点。

作为参考,这是 Javascript 中的命令式版本。该算法在此处描述。https://support.leetcode.com/hc/en-us/articles/360011883654-What-does-1-null-2-3-mean-in-binary-tree-representation-

0 投票
2 回答
215 浏览

c++ - 以下 3 种定义对象的方法是否相同?

据我了解,以下是相同的:

我注意到

Case 1产生与上述相同的跟踪输出Case 1.5

  • 问题 1:将案例 2 与案例 1 或案例 1.5 进行比较,是因为复制省略还是其他原因?

  • 问题2:以下有什么区别?

0 投票
2 回答
121 浏览

object - 有谁知道为什么 TWEAK 例程在 BUILD 例程之前被击中?

最小代码:

和输出:

相关文档位于https://docs.raku.org/language/objects#Object_construction。我引用:“在调用 BUILD 方法之后,调用名为 TWEAK 的方法(如果它们存在),再次使用传递给 new 的所有命名参数”。

我正在使用 Fedora 32 附带的 rakudo 版本(rakudo-0.2020.02-1.fc32.x86_64 所以可能是今年 2 月)。