dart 两个点:级联符号(..)
级联(..)允许您对同一对象执行一系列操作。除了函数调用,您还可以访问同一对象上的字段。这通常会省去创建临时变量的步骤,并允许您编写更多的级联代码。
示例代码:
querySelector('#confirm')// 获取一个对象..text='Confirm'// 使用它的成员..classes.add('important')..onClick.listen((e)=>window.alert('Confirmed!'));
第一个方法调用querySelector(),返回一个selector对象。遵循级联符号的代码对这个selector对象进行操作,忽略任何可能返回的后续值。
前面的例子相当于:
varbutton=querySelector('#confirm');button.text='Confirm';button.classes.add('important');button.onClick.listen((e)=>window.alert('Confirmed!'));
你也可以嵌套你的级联。例如:
finaladdressBook=(AddressBookBuilder()..name='jenny'..email='jenny@example.com'..phone=(PhoneNumberBuilder()..number='415-555-0100'..label='home').build()).build();
在返回实际对象的函数上构造级联要小心。例如,以下代码失败:
varsb=StringBuffer();sb.write('foo')..write('bar');// 错误:没有为“void”定义的方法“write”。
sb.write()调用返回void,你不能在void上构建级联。
注意:严格来说,级联的“双点”符号不是运算符。这只是Dart语法的一部分。
网友评论