Dart,创建变量作用域区段以多次使用相同的名称变量

  • 本文关键字:变量 创建 作用域区 Dart dart
  • 更新时间 :
  • 英文 :


在我的项目中,我有一个这样的代码(非常简化):

void main() async {
int times2({required int integer}) {
return integer*2;
}

final t1 = 0;
print(times2(integer: t1));
final t2 = 10;
print(times2(integer: t2));
final t3 = 25;
print(times2(integer: t3));
}

这就是这段代码的问题所在。这部分代码将来可能会更改。我可能要加上整数是15的情况。我可以:

void main() async {
int times2({required int integer}) {
return integer*2;
}

final t1 = 0;
print(times2(integer: t1));
final t2 = 10;
print(times2(integer: t2));
final t3 = 15;
print(times2(integer: t3));
final t4 = 25;
print(times2(integer: t4));
}

void main() async {
int times2({required int integer}) {
return integer*2;
}

final t1 = 0;
print(times2(integer: t1));
final t2 = 10;
print(times2(integer: t2));
final t2_1 = 15;
print(times2(integer: t2_1));
final t3 = 25;
print(times2(integer: t3));
}

在这两种情况下,它都可能导致混淆(因为命名。)

我找到了一个可以防止这种情况发生的方法。

void main() async {
int times2({required int integer}) {
return integer*2;
}

() {
final t = 0;
print(times2(integer: t));
}();

() {
final t = 1;
print(times2(integer: t));
}();

() {
final t = 2;
print(times2(integer: t));
}();
}

这样写感觉太不对了。我的问题是,"写这样的代码有问题吗?"或者"我们有更好的方法来实现这一点吗?">

额外的注意:我可以为这个简化的代码创建一个命名函数,但是实际的代码不能用命名函数来完成(这会使它更复杂)。

void newFunction({required int integer}) { // Don't want to create a function
print(times2(integer: integer));
}

如果你有重复的代码,你应该创建函数或循环

循环的例子:

int times2({required int integer}) {
return integer*2;
}
for(final t in <int>[1, 2, 3, 4, 5, 6]) {
print(times2(integer: t));
}

根据评论中的对话进行编辑

我是这样做单元测试的:

void main() {
void main() {
MyClassAdapter().registerForId(1);
group('Test serializing', () {
group('integers', () {
test('Uint8', () {
const data = 126;
final expected = [127, 255, 126];
expect(
binary.serialize(data), 
equals(expected),
);
});
test('Int8', () { 
const data = -14;
final expected = [127, 254, 242];

expect(
binary.serialize(data), 
equals(expected),
);
});
...
}

相关内容

  • 没有找到相关文章

最新更新