Dart:是否有一种方法可以在一行中否定并返回布尔值?

3
有没有一种方法可以使用Fat Arrow(=>)符号将以下函数写成单行代码?
 bool tick() {
   _tick = !_tick;
   return _tick;
 }
2个回答

2
简单来说:
bool tick() => !_tick;

_tick 应该被定义,这个函数将返回否定的值。因此,您必须对结果进行赋值才能实现否定。像这样:

void main() {
  bool _tick = true;
  _tick = tick(_tick);
  print(_tick); 
  _tick = tick(_tick);
  print(_tick); 
}

bool tick(tick) => !tick;

上面的代码将会输出:

false
true

如果您想在函数中声明一个变量并将其否定,可以尝试以下方法:
class Tick {
  bool tick;
  Tick(this.tick);
}

void tick(Tick data) => data.tick = !data.tick;

main() {
  var data = new Tick(true);
  print(data.tick); // true
  tick(data);
  print(data.tick); // false
  tick(data);
  print(data.tick); // true
}

接近了,但不完全一样。如果我重复调用此函数,它将返回相同的值。我的原始函数在重复调用时返回交替的值。 - Philipp
_tick 定义在哪里?你的原始代码中没有显示。 - Peter Koltai

2
以下的thick()方法将会取反_tick并返回新的赋值数值:
bool tick() => _tick = !_tick;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接