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);

你可能感兴趣的:(dart)