728x90
반응형
Cascade notation
.. 을 사용하면 한 오브젝트에 대해서 필드 접근, 함수 호출을 순차적으로 실행할 수 있다. 대상 객체를 반복적으로 쓰지 않아도 돼 문법이 간결해진다.
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'); // write를 먼저 호출 했기 때문에 반환된 값은 void이고 void에는 write가 없다.
728x90
반응형