首页 > 解决方案 > Dart:有没有办法在一行中否定并返回一个布尔值?

问题描述

有没有办法使用粗箭头 (=>) 符号将以下功能写成一行?

 bool tick() {
   _tick = !_tick;
   return _tick;
 }

标签: flutterdartboolean

解决方案


简单地:

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
}

推荐阅读