美文网首页
Dart相对Java特殊点摘录

Dart相对Java特殊点摘录

作者: 清霜辰 | 来源:发表于2020-03-18 17:52 被阅读0次

@[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

相关文章

网友评论

      本文标题:Dart相对Java特殊点摘录

      本文链接:https://www.haomeiwen.com/subject/ceccyhtx.html