공부

[Dart] 1. 기본

avocado8 2024. 3. 20. 15:59

 

개념은얼레벌레하지말자..

 

변수선언

var 타입 유추(런타임타입. 선언된 시점에 fix됨)

int 정수

double 실수

bool 불린

String 문자열

dynamic 뭐든 (선언이후에도 타입 변경 가능)

 

타입

nullable : null이 될 수 있음

non-nullable : null이 될 수 없음

타입에 ? 붙이면 nullable (String? name=null;)

타입에 ! 붙이면 null이 절대 아님을 보장 (String name = '카도'; print(name!);)

 

확정

final : 선언시 작성. 값 변경 불가 / 빌드 타임에 값을 몰라도 됨

const : 선언시 작성. 값 변경 불가 / 빌드 타임에 값을 알고 있어야 함

final, const 사용시 타입(var) 생략 가능

 

연산

?? : null이면 값 변경. 아니면 안 바꿈

number = null; 

number ??= 3.0;

---> number = 3.0

 

(variable) is (type) : 변수가 해당 타입인지 확인(bool)

(var) is! (type) : 위 연산의 반대

 

논리연산

&& and

|| or

 

리스트

List<리스트에들어갈변수들의타입> 리스트명

List<String> friends = ['cado', 'nana'];

인덱싱 friends[0]

요소추가 friends.add('daeta');

요소제거 friends.remove('daeta');

요소의 인덱스 friends.indexOf('cado');

 

Map<key타입, value타입> 맵이름

Map<String, String> friends = {'whale' : 'cado', 'banana' : 'nana'};

맵에 추가 friends.addAll({'추가할키' : '추가할요소'});

맵에 추가 friends['doll']='daeta';

제거 friends.remove('whale');

키값갖고오기 friends.keys -> (whale, banana)

밸류값갖고오기 friends.values

 

리스트와 비슷하나 중복값 존재X

Set<들어갈타입> 셋이름 = { };

메소드는 리스트에서 쓰던거 거기서거기

존재하는지? friends.contains('value');

 

 

조건문

if / else if / else

똑같음걍

switch(조건){

  case n: ... 

  default: ...

}

똑같음이것도

 

반복문

for(int i=0;i<n;i++){ (loop) }

똑같음

for-in문

List<int>numbers = [1,2,3,4,5,6];

for(int number in numbers) { print(number); }

 

while(조건) {}

do {} while();

 

enum

enum Status {
  approved,
  pending,
  rejected,
}

Status.approved 형식으로 사용

 

함수

함수이름(매개변수){ 함수내용 }

* positional parameter : 순서가 중요한 파라미터

* optional parameter - 있어도 되고 없어도 되는 파라미터. 매개변수에서 [ int y ] 처럼 대괄호로 감싸주면 됨

안 넣으면 null이 들어감

null 프로텍트에서...

- ? 붙이거나

- 기본값을 주거나

* named parameter - 이름이 있는 파라미터. 순서가 중요하지 않음

void main() {
  addNumbers(x:10, y:20, z:30);
}

addNumbers({
  required int x,
  required int y,
  required int z,
}) {
  int sum = x+y+z;
  if(sum%2==0) {
    print("합은 짝수");
  }
  else {
    print("합은 홀수");
  }
}

required를 지우면 optional parameter로 사용가능 (기본값 주면됨)

positional parameter과 함께 사용도 가능 (positional 파라미터 선언하고, named 파라미터는 중괄호 안에...)

 

함수선언과 typedef

void main() {
  Operation op = add;
  int result = op(10,20,30);
  print(result); //60
}

//signature
typedef Operation = int Function(int x, int y, int z);

int add(int x, int y, int z) => x+y+z;
int sub(int x, int y, int z) => x-y-z;

typedef의 시그니처에 부합하는 함수 뭐든 ok

void main() {
  Operation op = add;
  print(calc(10,20,30,op));
}

//signature
typedef Operation = int Function(int x, int y, int z);

int add(int x, int y, int z) => x+y+z;
int sub(int x, int y, int z) => x-y-z;

int calc(int x, int y, int z, Operation op){
  return op(x,y,z);
}

이런식으로도 많이쓴다네요

 

 

 

'공부' 카테고리의 다른 글

Vite 환경변수 설정하기  (1) 2024.06.26
[Dart] 2. OOP  (0) 2024.03.20
[Flutter] Pomodoro app  (0) 2024.03.12
리덕스 기초  (0) 2024.02.06
타입스크립트(TS) (3)함수, 클래스, 제네릭  (1) 2024.01.28