[Dart] flutter 를 위한 Dart 공부 1

THOVY·2023년 4월 22일
0
post-thumbnail

flutter 를 위해 Dart 를 공부해봅시다.

Java 와 매우 흡사합니다.

기본 문법

; 필수

+ - / * 나머지 %

print

1 더하기 할 때 number ++; 가능
다른 숫자 더하기는 number += 2; 해도 됨

역시 언어들은 매우 비슷하다.

확인
A is B; A is! B;
not 은 없는 듯

and &&
or ||

list 정의할 때는 안에 들어가는 속성의 타입을 지정합시다.
List<String> List<int> ...

list 의 길이 listA.length
list 에서 속성 지우기 listA.remove
list 에서 속성의 인덱스 listA.indexOf("A")

변수 타입 인쇄, 확인

변수 선언 var
하지만 정수 선언은 int 실수 선언은 double, 문자는 String




알아서 int 로 바꿔주는 군요

타입 인쇄: type print 는 runtimeType

타입 확인: type check is is 타입 is! 타입 또는 != 타입 == 타입 해도 됨
하지만 Try changing one or both of the operands 라는 안내가 나옴

하지만 int 로 선언해서 string 을 넣으면


에러가 나는 군여
int 에 double 을 넣으면?

타입은 웬만하면 정확하게 해줍시다 js 꼴나기싫으면.

dynamic ?



다양한 타입을 넣어도 되는 dynamic.
ts 의 any 같은 건가

명확하게 var int double 처럼 타입을 지정해줬다면


에러가 납니다

또한 dynamic 은 null 도 가능한 것이 정말 any 같음.
다른 건 안됨.

? nullable

하지만 타입을 명확하게하면서 null 을 쓰고싶다

하지만 var? 는 안됨. 타입이 명확하지 않잖슴 ;

??

A ?? = 20;
A 가 null 이면 20 으로 바꿔라.




null 이 아니면 바뀌지 않음


null 이면 바뀜

변수 확정 그런데 타입을 곁들인

const final


var 처럼 변수 타입을 지정하지 않아도 알아서 타입을 넣어줍니다.

const final 로 선언한 뒤엔 변경할 수 없습니다.

DateTime 타입



시간 타입 DateTime. 코드가 실행된 시간인 now()

하지만 DateTime 에서 finalconst 는 다릅니다.
constDateTime.now() 가 안 돼요.

백틱 을 쓰지 않고 ' 따움표만 해도 가능

Map

dictionary 처럼 key value 를 따라 값을 넣을 수 있습니다.

addAll 을 이용해 두 딕셔너리를 합칠 수 있습니다.

하나의 값을 새롭게 넣고싶다면
그냥 넣으면 됩니다.

변경하고 싶다면 그냥 변경하면 됩니다.

지우고 싶으면 map.remove('지울거')

keys 만, values 만

값이 있는지 확인
containsKey
containsValue 를 통해 값이 있는지 없는지 확인가능


bool 값으로 나옴

set

set 은 list 같지만 중복을 넣을 수 없습니다.

if 와 switch

if (조건) {결과}; else if (조건2) {결과2}; else{결과3};

switch(조건){
	case 조건:
    	결과;
        break;
    case 조건2:
    	결과2
        break;
    default:
    	결과3
        break;
    }

break 안 해주면 모든 case 를 돌아버림.
default 는 if 문의 else 같은 것

for 문

dartpad 제일 처음 시작하면 적혀있는 게 for 문이었군

for in 문

for( int i in listA ){
	print(i);
}

라고 할 수도 있음.

루프돌다가 if 와 함께 continue 를 넣으면 해당 loop 만 건너뜀

이쯤 되니 모든 언어의 짬뽕이 아닐까 싶음

while 문


while

enum 을 사용해 값이나 변수를 제한해보자.


enum 을 이용해 들어가야할 값과 변수를 제한해봅시다.

이렇게 해도 되지만
오타났을 경우를 대비하기도 하고.

함수에서 넣어도 되고 안 넣어도 되는 파라미터?

funcA ( String name, int age) {
	print(name)
    print(age)
}

optinal parameter

하지만 age 는 없어도 사용하고 싶다?
[] 대괄호를 해주자.
근데 없어도 되면 null이 되는 변수여야하잖슴. dynamic 을 써도 되지만 타입을 명확하게 하고 싶다?

nullable ?

funcB ( String name, [int? age]){
	print('$name, $age')
}

null 이면 안 된다?
혹은 계산에서 필요하다??
[] 안에서 기본값을 지정해주자.
기본값이 있을 때 내가 값을 넣으면 당연히 내가 넣은 값이 파라미터로 들어감.

순서 상관없이 넣고싶다?

그럼 required 이름

optional parameter

required 를 지우자.
지우면 null 값이 들어갈 수 있다는 것으로. type 을 제대로 지정하지 않으면


에러로 혼내준다.

?로 null 도 가넝한

함수의 반환 타입 지정?


이렇게 함수에 타입을 지정해주지 않아도 되지만.


타입을 지정해주면 조금 더 명확한 함수를 만들 수 있다.

Arrow function 화살표함수



이거 완전 js 아니냐
바로 return 되는 것이 특징

typedef, Operation

아니 이거 완전 c 아니냐

calculator 라는 함수를 만들어서 Operation 을 조금 더 실용적으로 사용할 수 있다!


void main(){
	print(10,20,add);	// 30
    print(10,20,subt);	// -10
}


typedef Operation = int Function(int x, int y);

int add(int x, int y) => x+y ;

int subt(int x, int y){
  return x-y;
}

int calculator(int x, int y, Operation operation){
  return operation(x,y);
}
profile
BEAT A SHOTGUN

0개의 댓글