1. 程式人生 > 實用技巧 >Dart語言學習筆記(2)

Dart語言學習筆記(2)

函式

// 函式
bool isNoble(int atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}
// 返回型別可省略(不推薦)
isNoble(atomicNumber) {
  return _nobleGases[atomicNumber] != null;
}
// 函式只包含一個表示式時可使用縮略語法
//  => expr 相當於 { return expr; }

必要引數和可選引數

必要引數在前,可選引數在後
可選引數可以是 具名引數或位置引數

// 具名實參 paramName: value
enableFlags(bold: true, hidden: false);
// 具名形參 {param1, param2, …}
/// Sets the [bold] and [hidden] flags ...
void enableFlags({bool bold, bool hidden}) {...}
// 可選引數中也可標註必要引數
import package:meta/meta.dart
const Scrollbar({Key key, @required Widget child})
// 位置引數
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');
assert(say('Bob', 'Howdy', 'smoke signal') ==
    'Bob says Howdy with a smoke signal');
// 預設引數
/// 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);
// 使用預設引數
String say(String from, String msg,
    [String device = 'carrier pigeon', String mood]) {
  var result = '$from says $msg';
  if (device != null) {
    result = '$result with a $device';
  }
  if (mood != null) {
    result = '$result (in a $mood mood)';
  }
  return result;
}
assert(say('Bob', 'Howdy') ==
    'Bob says Howdy with a carrier pigeon');
// 預設引數也可以是 List 或 Map
void doStuff(
    {List<int> list = const [1, 2, 3],
    Map<String, String> gifts = const {
      'first': 'paper',
      'second': 'cotton',
      'third': 'leather'
    }}) {
  print('list:  $list');
  print('gifts: $gifts');
}

main 函式

main 函式為程式的起點,返回 void,有一個可選的 List<String> 型別的引數

void main() {
  querySelector('#sample_text_id')
    ..text = 'Click me!'
    ..onClick.listen(reverseText);
}
// Run the app like this: dart args.dart 1 test
void main(List<String> arguments) {
  print(arguments);
  assert(arguments.length == 2);
  assert(int.parse(arguments[0]) == 1);
  assert(arguments[1] == 'test');
}