我在将 C++ 数据结构转换为 Scala 时遇到问题。 Scala 确实不同于 C++,但我非常喜欢它。 我在 C++ 中有以下代码片段:
struct Output
{
double point;
double solution[6];
};
struct Coeff
{
double rcont1[6];
double rcont2[6];
double rcont3[6];
double rcont4[6];
double rcont5[6];
double rcont6[6];
};
std::list<Output> output;
std::list<Coeff> coeff;
我现在用数据在 while 循环中填充列表
while(n<nmax) {
if step successfull
Output out;
out.point = some values;
out.solution[0] = some value;
output.push_back(out);
}
我尝试在 Scala 中创建一个简单的类来保存数据。
class Output
{
var point: Double
var solution: Array[Double] = new Array(6)
}
但这不起作用,因为点未初始化。有没有解决的办法?我只想定义变量而不是初始化它。
又是一件快事。我正在寻找与 STL::lower_bound 等价的东西。
找到正确的位置将元素插入已排序的容器中以维持顺序。
感谢您帮助 Scala 初学者
最佳答案
你为什么不想初始化它?为了效率?恐怕 JVM 不会让你摆脱基于最初存在的变量中的随机垃圾。所以既然你无论如何都要初始化它,为什么不指定你的“未初始化”值是什么?
class Output {
var point = 0.0
var solution = new Array[Double](6)
}
(您可以使用 Double.NaN
并检查 point.isNaN
如果您稍后需要查看该值是否已初始化。)
您可以使用 _
作为默认初始化,但除非您在通用代码中使用它:
class Holder[T] {
var held: T = _
}
那么您只是模糊了实际设置的值。 (或者你宣布“我真的不在乎这里发生了什么,它可以是任何东西”——这可能很有用。)
关于c++ - C++ 程序员关于 Scala 的问题(结构和 STL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483589/