result = ‘$result with a $device’;
}
return result;
}
// 方法调用
void main() {
say(‘Bob’, ‘Howdy’); //不使用可选参数
say(‘Bob’, ‘Howdy’, ‘smoke signal’); //使用可选参数
}
- 默认参数值
/// 设置 [bold] 和 [hidden] 标志 …
void enableFlags({bool bold = false, bool hidden = false}) {}
void main(){
// bold 值为 true; hidden 值为 false.
enableFlags(bold: true);
}
-
函数是一等公民
-
一个函数可以作为另一个函数的参数。
-
同样可以将一个函数赋值给一个变量。
printElement(int element) => print(element);
void mian(){
var list = [1, 2, 3];
// 将 printElement 函数作为参数传递。
list.forEach(printElement);
}
- 匿名函数
void main() {
var list = [‘apples’, ‘bananas’, ‘oranges’];
list.forEach((item) {
print(’${list.indexOf(item)}: $item’);
});
}
- 闭包:其实闭包就是在一个函数中可以调用其他的函数,这样其他的函数可以使用本函数的参数及其他内容。
-
类型判断运算符
-
as 类型转换
-
is 判断是否为某类型
-
is! 判断不是某类型
-
赋值运算符
-
a = value; 将value赋值给便里昂a
-
b ??= value; 如果b为空时, 将value赋值给b, 否则b的值保持不变。
-
条件表达式
-
condition ? expr1 : expr2 如果条件为 true, 执行 expr1 (并返回它的值):否则, 执行并返回 expr2 的值。
-
expr1 ?? expr2 如果 expr1 是 non-null, 返回 expr1 的值; 否则, 执行并返回 expr2 的值。
-
级联运算符
-
可以实现对同一个对象进行一系列的操作。
-
除了调用函数, 还可以访问同一对象上的字段属性。这通常可以节省创建临时变量的步骤, 同时编写出更流畅的代码。
-
类似与build模式。
class Person{
int age;
String name;
Person({this.name, this.age});
void say(String words) {
print(name + words);
}
}
void main(){
Person() // 获取对象。
…name = ‘Bob’ // 调用成员变量。
…say(‘important’);
// 等价于下面的代码
var person = Person(name: “Bob”);
person.say(‘important’);
// 级联运算符可以嵌套
/*final addressBook = (AddressBookBuilder()
…name = ‘jenny’
…email = ‘jenny@example.com’
…phone = (PhoneNumberBuilder()</