Dart相对Java特殊点摘录

@[TOC]

Dart相对Java特殊点摘录

=>简写

//以下三者完全等价
bool isNoble(int atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

isNoble(atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}

bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

级联符号(..)

级联(..)允许您对同一对象执行一系列操作。除了函数调用,您还可以访问同一对象上的字段。这通常会省去创建临时变量的步骤,并允许您编写更多的级联代码。

void main() {
  querySelector('#sample_text_id')  // 获取一个对象
    ..text = 'Click me!'  //使用它的成员
    ..onClick.listen(reverseText);
}

条件表达式中的两个问号(??)

以下三者等价

String playerName(String name) => name ?? 'Guest';

// 稍微长一点的版本使用 ?: 操作符
String playerName(String name) => name != null ? name : 'Guest';

// 非常长的使用if - else语句的版本
String playerName(String name) {
  if (name != null) {
    return name;
  } else {
    return 'Guest';
  }
}

赋值表达式(?.)

对象的成员赋值时,可以减少对象为null的判断

// If p is non-null, set its y value to 4.
p?.y = 4;

//等价
if (p != null) {
    p.y=4
}

所有函数都有返回值,一切皆为对象

foo() {}
assert(foo() == null);

函数的参数不一定必须有,如下情况

String say(String from, String msg, [String device]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  return result;
}

assert(say('Bob', 'Howdy') == 'Bob says Howdy');


/// Sets the [bold] and [hidden] flags ...
void enableFlags({bool bold = false, bool hidden = false}) {...}

// bold will be true; hidden will be false.
enableFlags(bold: true);

参考
https://dart.dev/guides/language/language-tour
https://www.jianshu.com/p/64a6ed7581aa

推荐阅读更多精彩内容

  • [TOC] 定位 首先本文是通过对比其他语言(主要是java)快速入门,建议您至少要熟悉一门静态语言或者动态语言。...
    verlecon阅读 3,483评论 1 9
  • Dart重要概念:1,在变量中可以放置的所有东西都是对象,而每个对象都是类的实例。无论数字、函数、和null都是对...
    哥哥是欧巴Vitory阅读 117评论 0 0
  • 喜欢写日记的人生活多半丰富,丰富的快乐幸福,或是丰富的苦闷压抑。 我一生有四本日记本:三本高中的,一本大学的。断定...
    干了这碗墨阅读 99评论 0 1
  • 趟入一条平坦的河。 #安静#
    仇志飞阅读 19评论 0 0
  • 有七十二名泉,但我最喜欢的,还是五龙潭。 一进五龙潭公园的大门,就看见那刻着五条龙的巨大青色屏风,显得威武而气派。...
    名侦探磕掺阅读 45评论 0 0