自从最新的颤动更新以来,我的测试被打破了.看起来Dart测试框架不再可用了:
error: Target of URI doesn't exist: 'package:test/test.dart'.
Run Code Online (Sandbox Code Playgroud) 我想使用相同的函数初始化几个最终成员变量。不幸的是,dart 不允许在 const 构造函数的初始化列表中调用函数:
int fun(int val) => val + 1;
class Foo {
final int a;
final int b;
final int c;
const Foo(int a, int b, int c)
: a = fun(a), <-- this won't compile because
b = fun(b), <-- the constructor
c = fun(c); <-- is const
}
Run Code Online (Sandbox Code Playgroud)
我绝对需要构造函数是一个常量表达式(为了保持与现有第三方库代码的兼容性)。我能想到的唯一解决方法是重复将整个函数体复制并粘贴到初始值设定项列表中。我已经在一些 flutter 库中看到过这种反模式。但我还是宁愿避免它。有人知道更干净的解决方案吗?
我正在处理一个包含大量遗留代码的应用程序。我经常看到的是在 StringBuilder 参数中使用“+”进行字符串连接。
例子:
StringBuilder sb = new StringBuilder("This "
+ "looks "
+ "rather "
+ "weird "
+ "to "
+ "me.")
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器用 StringBuilder().append() 替换了使用 + 运算符的字符串连接。
恐怕现在编译器会创建一个临时的 StringBuilder 来执行连接,然后转换为 String() 并将结果插入现有的 StringBuilder。
我的问题是:编译器是否能够优化嵌套的 StringBuilder?如果不是,我应该重写代码以节省几个 CPU 周期吗?它显然是有效的,但每当我看着它时它都会伤害我的眼睛。
感谢您的任何见解!