다트 학습 - 1~13 강

연어는결국강으로·2022년 10월 5일
0

Dart문법

목록 보기
1/2

1. DartPad 사용하기

DartPad링크


2. 변수

flutter 학습할 때 아래 4가지 변수를 사용한다고 했다.
아래 그림은 출력결과이다.

void main() {
  int n1 = 1;
  double d1 = 10.1;
  bool b1 = true;
  String s1 = "hong";
  
  print("정수 : $n1");
  print("실수 : $d1");
  print("불련 : $b1");
  print("문자열 : $s1");
  
}


3. 타입추론

자바스크립트와 같이 타입추론을 지원한다.

void main() {

  var n = 1;
  var d = 10.1;
  var b = true;
  var s = "hong";
  
  print(n);
  print(d);
  print(b);
  print(s);
  
  print(n.runtimeType);
  
  n = 2;
  print(n);
  n = 10.2;
}

당연하게도 var가 int타입을 가지게 된 후에 double값을 넣으면 안된다.


4. dynamic

모든 타입을 받을 수 있는 무적의 타입이다.

void main() {

  dynamic n1 = 1;
  print(n1);
  print(n1.runtimeType);
  
  n1 = 10.5;
  print(n1);
  print(n1.runtimeType);
}


5. 연산자

자바랑 똑같다!!
근데 dart에는 몫 연산자가 있다. 자바에도있나? 써본적이 없어선지 잘 모르겠다. 어쨋든 적어보자면

print(5~/2);

이거다. ~/ 이게 몫 연산자이다. 실행하면 아래 그림과 같은 결과가 나온다.


6. 조건문

이것도 자바랑 똑같다. 근데 못보던게 있는데 그게 바로 null연산자이다.

 String username = null;
 print(username ?? "홍길동");

쓰면 홍길동이 나와야 되는데 에러가 터진다. 패치가 되었는지 String에는 null이 들어갈 수 없다고 한다.


7. 함수

자바랑 같다
다만 public, private가 안붙네?


8. 익명함수와 람다식

void run(){
  print("run");
}

void study(){
  print("study");
}

// 하루 루틴을 결정해주는 함수
void routine(Function start){ // Function 함수타입을 담을 수 있다.
  //study();
  start();
}

void main() {
  routine(run);
}

  달리기 함수와 공부 함수가 있다. routine 함수에 study();를 넣는 식으로 구현해 놓으면 매번 다른 함수를 넣을때마다 함수 내부를 수정해야된다. 이렇게 하지 않기 위해서 Function이라는 객체를 쓰는데 이는 함수타입을 담을 수 있는 객체이다.
 그렇다면 이렇게 하는게 최선일까? 만약 식사라는 함수도 있고 잠 더 자기 함수 등등 1000개의 함수가 필요하다면 1000개의 함수를 모두 다 작성해야 하는가? 아무래도 좀 끔찍한 상황인거 같다. 이것을 타개하기 위해 익명함수를 쓴다.

void main() {
  routine((){
    print("농구");
  });
}

  이름이 없는 함수라서 익명 함수이다. 안에 아무거나 넣어도 된다.

void routine(Function start){ // Function 함수타입을 담을 수 있다.
  String result = start();
  print(result);
}

void main() {
  routine((){
    print("캬캬캬캬");
    return "짜파게티 먹기";
  });
  
  routine(()=>"신라면 먹기");	// 람다식
}

  람다식 안에는 두개를 쓸 수 없다. 따라서 두 개를 써야할 경우에는 익명함수를 써야만 한다. 정리하자면 람다식이나 익명함수는 입력값이 뭐가 될지 모르겠을때 클라이언트가 결정하도록 하는 것이다.


0개의 댓글