Dart學習筆記整理02

函數----命名參數:

void enableFlags(bool bold,{bool hidden}){
	if(bold){
  		print('YES bold');
  	}
  	if(hidden){
    	print('YES hidden');
  	}
 }

void main(){
	enableFlags(true,hidden:true);

}

void 返回值
enableFlags 函數名
bold 參數名A
hidden 參數名B
{…} 函數主體

可選參數 —將參數放到 [] 中來標記參數是可選的:

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

在這裏 device 不傳,不會引起編譯器錯誤提示

默認參數 在參數後=賴定於可選參數默認值

void enableFlags({bool bold = false, bool hidden = false}) {...}

設置了默認參數以後 ,即使不傳參數 也不會引起編譯器錯誤提示,只能在命名參數,可選參數,才能配置默認值。

main函數 作爲應用服務的入口 ,返回值爲void ,參數是一個可選的List

void main (){
}

匿名函數 closure

([[Type] param1[, …]]) { 
  codeBlock; 
}; 

====== 例子:

  var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});


請在main方法中執行上述例子,該foreach方法遍歷了list的每一個元素。

語法閉包

/// 返回一個函數,返回的函數參數與 [addBy] 相加。
Function makeAdder(num addBy) {
  return (num i) => addBy + i;
}

void main() {
  // 創建一個加 2 的函數。
  var add2 = makeAdder(2);

  // 創建一個加 4 的函數。
  var add4 = makeAdder(4);

  assert(add2(3) == 5);
  assert(add4(3) == 7);
}

測試函數是否相等:

void foo() {} // 頂級函數

class A {
  static void bar() {} // 靜態方法
  void baz() {} // 示例方法
}

void main() {
  var x;

  // 比較頂級函數。
  x = foo;
  assert(foo == x);

  // 比較靜態方法。
  x = A.bar;
  assert(A.bar == x);

  // 比較實例方法。
  var v = A(); // A的1號實例
  var w = A(); // A的2號實例
  var y = w;
  x = w.baz;

  // 兩個閉包引用的同一實例(2號),
  // 所以它們相等。
  assert(y.baz == x);

  // 兩個閉包引用的非同一個實例,
  // 所以它們不相等。
  assert(v.baz != w.baz);
}

返回值

所有函數都會返回一個值。 如果沒有明確指定返回值, 函數體會被隱式的添加 return null; 語句。

foo() {}

assert(foo() == null);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章