级联操作符
级联可以对同一个对象执行一系列的操作。除了函数调用,你也可以存取统一对象上的字段。这可以减少创建临时变量的步骤,写出更优美的代码。
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
上面的代码等同于:
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
级联操作也可以嵌套使用
final addressBook = (AddressBookBuilder()
..name = 'jenny'
..email = 'jenny@example.com'
..phone = (PhoneNumberBuilder()
..number = '415-555-0100'
..label = 'home')
.build())
.build();
如果一个函数能返回一个明确的对象,在函数内使用级联操作符要小心。例如:
var sb = StringBuffer();
sb.write('foo')
..write('bar');
sb.write()方法返回一个void,不能对void对象使用级联。
网友评论