final items = [1,2,3,4,5];
for(var i = 0; i < items.length; i++) {
print(items[i]); // 1,2,3,4,5
}
1. items.forEach(print);
2. items.forEach((e) => print(e));
3. items.forEach((e) {print(e);});
(transactions.where((e) => e.trader.city == "Cambridge").toList())
.forEach((e) {print(e.trader.name);});
final items = [1,2,3,4,5];
for(var i = 0; i < items.length; i++) {
if (items[i].isEven) {
print(items[i]);
}
}
Dart 언어는 짝수인지 홀수인지에 대해 다른 언어와 달리 isEven, isOdd가 있다.
items.where((e) => e.isEven).forEach(print);
class Trader {
String name;
String city;
Trader(this.name, this.city);
}
class Transaction {
Trader trader;
int year;
int value;
Transaction(this.trader, this.year, this.value);
}
final transactions = [
Transaction(Trader("Brian", "Cambridge"), 2011, 300),
Transaction(Trader("Raoul", "Cambridge"), 2012, 1000),
Transaction(Trader("Raoul", "Cambridge"), 2011, 400),
Transaction(Trader("Mario", "Milan"), 2012, 710),
Transaction(Trader("Mario", "Milan"), 2012, 700),
Transaction(Trader("Alan", "Cambridge"), 2012, 950),
];
transactions.map((e) => e.trader.city)).forEach(print);
transactions.map((e) => e.trader.name).toSet().forEach(print);
1. print(items.reduce((a,b) => max(a,b)));
2. final result = items.reduce(max);
전체 트랜잭션 중 최대값을 구하는 문제에서 (transactions.reduce((a,b) => max(a.value, b.value));로 했더니 에러가 남. 그 이유는 transactions 안에는 string인 name, city도 있고 int인 year, value도 있어서, max뒤의 value의 int 타입과 같지 않아서였다. 그래서 map으로 value만을 뽑아 리스트를 만든 뒤 비교해 최대값을 구했다.
print(transactions.map((e) => e.value).reduce(max));
(transactions.map((e) => e.trader.name).toSet().toList()..sort()).forEach(print);