var, dynamic
varλ μμ λ‘μ΄ νμ μΌλ‘ λ³μλ₯Ό μ μ₯ν μ μμ§λ§ μ²μμ μ μ₯λ λ³μμ νμ λ§κ³ λ€λ₯Έ νμ μ μ μ₯λ μ μμ
dynamicμ μ²μμ μ μ₯λ νμ κ³Όλ μκ΄μμ΄ λ¬΄μ¨ νμ μ΄λ μ μ₯ κ°λ₯
var name = 'abc';
name = 'ddd';
name = 3; //error
dynamic name2 = 'abc';
name2 = 'ddd';
name2 = 3; //ok
const, final
μ½λλ₯Ό μ€ννμ§ μμ μνμμ κ°μ΄ νμ λλ©΄ const, μ€νλ λ νμ λλ©΄ final
final DateTime now = DateTime.now(); //λ°νμ μμ
const DateTime now2 = DateTime.now(); //error. λΉλνμ μμμ. λΉλνμμ κ°μ μμμΌνλλ° DateTime.now()
//λ°νμμ λ°νλλ κ°μ μ μ μμ΄μ μλ¬
컬λ μ
List : μ¬λ¬κ°μ μμλλ‘ μ μ₯
Map : νΉμ ν€κ°μ κΈ°λ°μΌλ‘ λΉ λ₯΄κ² κ°μ κ²μ
Set : μ€λ³΅λ λ°μ΄ν° μ κ±°
-> 컬λ μ
νμ
μ μλ‘μ νμ
μΌλ‘ μμ λ‘κ² νλ³ν κ°λ₯
where
μννλ©΄μ νΉμ 쑰건μ λ§λ κ°λ§ νν°λ§νλλ° μ¬μ©
parameter : ν¨μ
return : trueλ₯Ό 리ν΄νλ©΄ κ°μ μ μ§, falseλ©΄ κ°μ λ²λ¦Ό. iterable λ°ν
void main(){
List<String> list = ['a', 'b', 'c'];
final newList = list.where((element) => element == 'a' || element == 'c');
//newListλ iterable.
print(newList.toList());
}
map()
μννλ©΄μ κ°μ λ³κ²½ν μ μμ.
parameter : ν¨μ. κΈ°μ‘΄ κ°μ νλμ© λ§€κ°λ³μλ‘ λ°μ.
return : λ°ννλ κ°μ΄ νμ¬κ°μ λ체νλ©° μνκ° λλλ©΄ iterable λ°ν
void main(){
List<String> list = ['a', 'b', 'c'];
final mapList = list.map( (e) => 'map-$e');
print(mapList);
}
reduce()
μννλ©΄μ κ°μ μμκ°
parameter : ν¨μ, μ΄ ν¨μλ 맀κ°λ³μ 2κ°λ₯Ό μ λ ₯ λ°μ. μνκ° μ²μ μμλ λ 첫λ²μ§Έ 맀κ°λ³μ valueλ 리μ€νΈμ 첫λ²μ§Έκ°, 'a'λ₯Ό λ°κ² λκ³ λλ²μ§Έ 맀κ°λ³μ elementλ 'b'λ₯Ό λ°κ²λ¨. 첫λ²μ§Έ μνμ΄νλ‘λ 첫λ²μ§Έ 맀κ°λ³μμ κΈ°μ‘΄ μνμμ λ°νν κ°μ΄ 첫λ²μ§Έ 맀κ°λ³μμ μ λ ₯λκ³ λ¦¬μ€νΈμμ λ€μ κ°μ΄ 'c'κ° λλ²μ§Έ 맀κ°λ³μμ μ λ ₯λ¨.
return : list νμ λ°ν
void main(){
List<String> list = ['a', 'b', 'c'];
final allList = list.reduce((value, element) => value + ',' + element);
print(allList);
}
fold()
reduce()μ λ Όλ¦¬κ° λκ°μ. λ€λ§ reduceλ listμμ λͺ¨λ μμκ° κ°μ νμ μ΄μ΄μΌ νμ§λ§ foldλ νμ μ΄ λͺ¨λ λ¬λΌλ μκ΄μμ
parameter : μμν κ°, ν¨μ. 첫λ²μ§Έ μνλ 리μ€νΈμ 첫 λ²μ§Έ κ°μ΄ μλ fold()ν¨μμ 첫λ²μ§Έ 맀κ°λ³μμ μ λ ₯λ κ°μ΄ μ΄κΈ°κ°μΌλ‘ μ¬μ©λ¨
void main(){
List<String> list = ['a', 'b', 'c'];
final foldList = list.fold<int>(0, (value, element) => value+element.length);
print(foldList);
}
enum
λ³μμ κ°μ λͺκ°μ§ μ΅μ μΌλ‘ μ ννλ κΈ°λ₯. μ νμ§κ° μ νμ μΌ λ μ¬μ©
enum Status{
approved,
pending,
rejected
}
void main(){
Status status = Status.approved;
print(status);
}
nullκ΄λ ¨ μ°μ°μ
λ€νΈμμλ λ³μνμ μ΄ nullκ°μ κ°μ§λμ§ μ¬λΆλ₯Ό μ§μ μ§μ ν΄μ€μΌν¨
νμ ν€μλλ₯Ό κ·Έλλ‘ μ¬μ©νλ©΄ κΈ°λ³Έμ μΌλ‘ nullμ΄ μ μ₯λ μ μμ
νμ λ€μ '?'λ₯Ό μΆκ°ν΄μΌ nullκ°μ΄ μ μ₯λ μ μμ
void main(){
double? number = 1;
number = null;
double number2 = null; //error
}
'??' : nullμ κ°μ§μ μλ λ³μμ μλ‘μ΄ κ°μ μΆκ°ν λ '??'μ μ¬μ©νλ©΄ κΈ°μ‘΄μ nullμΈ λλ§ κ°μ΄ μ μ₯λλλ‘ ν μ μμ
void main(){
double? number; //μλμΌλ‘ nullμ§μ
print(number);
number ??= 3; //??λ₯Ό μ¬μ©νλ©΄ κΈ°μ‘΄ κ°μ΄ nullμΌ λλ§ μ μ₯λ¨
print(number);
number ??=4; //nullμ΄ μλλ―λ‘ 3μ΄ μ μ§λ¨
print(number);
}
νμ λΉκ΅ μ°μ°μ
void main(){
int number = 1;
print(number is int); //true
print(number is String); //false
print(number is! int); //false
print(number is! String); //true
}
for loop
void main(){
List<int> list = [1,2,3];
for(int number in list){
print(number);
}
}
ν¨μ
positional parameter : μμκ° κ³ μ λ 맀κ°λ³μ(νν 보λ ννμ ν¨μ)
named parameter: μ΄λ¦μ΄ μλ 맀κ°λ³μ, ν€μ κ° ννλ‘ λ§€κ°λ³μλ₯Ό μ λ ₯νλ©΄ λλ―λ‘ μμλ μκ΄μμ.
required ν€μλλ 맀κ°λ³μκ° nullκ°μ΄ λΆκ°λ₯ν νμ μ΄λ©΄ κΈ°λ³Έκ°μ μ§μ ν΄μ£Όκ±°λ νμλ‘ μ λ ₯ν΄μΌνλ€λ μλ―Έ
int add({
required int a,
required int b
}){
return a+b;
}
void main(){
print(add(a: 3,b: 10));
}
int add2(int a, [int b = 2]){ //κΈ°λ³Έκ°μ κ°λ positional prameter
return a+b;
}
void main(){
print(add2(3));
}
positional parameterμ named parameterλ₯Ό μμ΄ μ¬μ©ν μλ μμ. μμ΄ μΈ λλ positional parameterκ° λ°λμ λ¨Όμ μμΌν¨.
int add3(int a, {required int b, int c=4,}){
return a+b+c;
}
void main(){
print(add3(1, b:3, ));
}
μ΅λͺ ν¨μμ λλ€ν¨μ
λλ€ ν¨μμ΄λ¦μ΄ μμ. μΌνμ±μΌλ‘ μ¬μ©λ¨. λ€νΈμμλ λ°λ‘ ꡬλΆνμ§ μμ
μ΅λͺ ν¨μ | λλ€ν¨μ |
(맀κ°λ³μ){ ν¨μλ°λ } |
(맀κ°λ³μ) => λ¨ νλμ μ€ν μ΄νΈλ¨ΌνΈ |
λλ€ν¨μλ νλμ μ€ν μ΄νΈλ¨ΌνΈλ§ λ€λ£¨κΈ° λλ¬Έμ κ°κ²°νκ² μ½λλ₯Ό μμ±ν μ μλ€.
μ½λ°±ν¨μλ 리μ€νΈμ map(), reduce(), fold() ν¨μλ±μμ μΌνμ±μ΄ λμ λ‘μ§μ μνν λ μ¬μ©
void main(){
List<int> list = [1,2,3,4,5];
final total = list.reduce((value, element) => value+element);
print(total);
}
typedef ν€μλ
ν¨μμ μκ·Έλμ²(λ°νκ° νμ , 맀κ°λ³μ κ°μμ νμ λ±)λ₯Ό μ μνλκ°. μ¦ ν¨μ μ μΈλΆλ₯Ό μ μνλ ν€μλ. ν¨μμ λν μ μλ μμ.
λ€νΈμμ ν¨μλ μΌκΈκ°μ²΄μ΄λ―λ‘ ν¨μλ₯Ό κ°μ²λΌ μ΄μ©ν μ μμ.
void add(int a, int b){
print('add : ${a+b}');
}
void subtract(int a, int b){
print('subract : ${a-b}');
}
typedef Operation = void Function(int x, int y);
void main(){
Operation operation = add;
operation(1, 2);
operation = subtract;
operation(5, 10);
}
void add(int a, int b){
print('add : ${a+b}');
}
void subtract(int a, int b){
print('subract : ${a-b}');
}
typedef Operation = void Function(int x, int y);
void calculate(int x, int y, Operation operation){
operation(x, y);
}
void main(){
calculate(1, 2, subtract);
}
λκΈ