Flutter는 다트 언어로만 진행된다.
int timesTwo(int x) {
return x * 2;
}
이건 int로 들어갔다가 int로 나온다
int x의 값을 인자로 전달받아
x*2 한 값을 리턴한다.
int timesFour(int x) => timesTwo(timesTwo(x));
return을 => 으로 바꿀수있다.
예를 들어 int timesTwo(int x) {
return x * 2;
} 이것을
int timesTwo(int x) => x * 2;
로 바꿀수있다.
Dart가 좋은게 funtion 자체를 funtion 안에 넣어줄수있다.
int runTwice(int x, Function f) {
x = f(x);
x = f(x);
return x;
}
main()
print("2 x 2 x 2 is ${runTwice(2, timesTwo)}");
이렇게 해주면 8이 나온다.
timesTwo는 x * 2이고
x는 2 이당 2*2 =4 인데
다시한번 4에 x*2를 해주어서 8이라고나온다.
Control flow
bool 은 두가지 값만 들어갈수있다.
bool isEven(int x) {
if (x % 2 == 0) {
return true;
} else {
return false;
}
}
int x 정수가 짝수인가 홀수인가 물어보는 내용
x % 2는 이걸 계산하고 나머지 값이
== 은 비교하는것이다
if (x % 2 == 0) 이걸 해석하면 만약에 x를 2로 나눈 나머지 값이 0과 같으면
return true; true라고 하고 } else { 아니라면 return false; False라고 한다.
List<int> getEvenNumbers(Iterable<int> numbers) {
var evenNumbers = <int>[];
for (var i in numbers) {
if (isEven(i)) evenNumbers.add(i);
}
return evenNumbers;
}
for (var i in numbers) numbers를 i에서 하나씩 받아와서 이 i를 if 문 코드에 던져준다.
만약 numbers 안에 1,2,3,4,5 가있다면
if (isEven(i)) evenNumbers.add(i); } 여기까지 1,2,3,4,5가 조건이 돌아가고,
만약에 i값이 짝수라면 var evenNumbers = []; 여기에 넣어준다. 홀수면 그냥 넘어간다.
return evenNumbers; 해당 코드가 발생한다.
그리고 그렇게 생선된 eveenNumbers를 다시 리턴을 해준다.
class Car{
int seats;
String color;
Car(int sts, String clr){
this.seats = sts;
this.color = clr;
}
} //이 부분을 클래스라고 한다.
main(){
Car newCar = Car(4, 'red');
print('seat: ${newCar.seats}');
오브젝트 object = 인스턴스 insteance이다. 여기서는 생성된차 newCar를 오브젝트 라고한다.
Car(int sts, String clr){ this.seats = sts; this.color = clr; }
주문서를 받는 이부분은 construct 라고 한다.
이 주문서를 보고 고객들은
main(){ Car newCar = Car(4, 'red'); print('seat: ${newCar.seats}');
이렇게 주문을한다. (인스턴스)
Print할때 함수로 만들어주는법
print('seat: ${newCar.seats}');
이부분을
printVars(){ print('seat : $seats'); }
로 바꿀수 있다.
Mouse(var na, [var ag]){ this.name = na; this.age = ag; }
저렇게 중괄호로 묶어주면 옵션화가 설정이되서 main에서 출력시 빠져도 출력이 된다.(넣어도되고 안넣어도되고)
main() { Mouse newMouse1 = Mouse('Picachu'); newMouse1.printVars();
이렇게 나이 부분이 빠져있어도 컴파일러가 실행된다.
Mouse(var na, [var ag = 13]){ this.name = na; this.age = ag; }
처럼[ var ag = 13] 으로 하면 기본값으로 나오며 객체에서 빠져있어도 기본값이 실행된다.
위의 Main함수가 실행되면
name : Picachu, age : 20
이렇게 출력된다.
혹시나 construct의 문장에서
Mouse(var na, var ag){ this.name = na; this.age = ag; }
어떤것 부터 선언했는지 까먹는 경우가 많다
Main함수에서 차례대로 입력하지 않으면 컴파일러가 돌아가지않는다.
이럴때는
Mouse({var na, var ag}){ this.name = na; this.age = ag; }
이렇게 대괄호를 추가해주고
main() { Mouse newMouse1 = Mouse(na: 'Picachu',ag:20);
Main 함수에 각각 변수를 써주고 : 를 추가하면 알아서 컴파일러가 찾아간다.