우선 dart의 온라인 컴파일러 사이트다.
var 와 dynamic 변수선언
var, dynamic 모두 모든 형태의 변수를 선언할 수 있다.
하지만, var은 처음 선언한 형태의 변수로 픽스가 된다.
dynamic은 뜻 그대로 유동적으로 다른 형태의 변수로 선언 될 수 있다.
Final 과 Const
final 과 const 모두 값을 한번 선언하면 바꿀 수 없다.
그리고 final 과 const는 var도 내포하고 있기 때문에 타입을 선언하지 않아도(생략가능) 오류가 뜨지 않는다.
추가로 Final은 buildtime을 몰라도 되지만, const는 buildtime을 알아야한다.
Nullable (?연산자, ??연산자)
원래 타입별로 null값을 넣을 수 없는 타입이 있는데
null 값을 넣을 수 있게 만드는 연산자가 '?'이다.
리스트
List<변수 타입>변수이름 = [A,B,C,D];
ex) List<String>friends=['철수','진수','민수','현수'];
리스트 관련 함수
함수 | 설명 | 예시 |
add | 끝 index에 value 추가 | friends.add('정수') = ['철수','진수','민수','현수', '정수']; |
remove | 해당 value 제거 | friends.add('민수') = ['철수','진수','현수', '정수']; |
indexOf | 해당 value의 인덱스 가져오기 | friends.indexOf('진수') = 1;(위 예시에서) |
set는 list와 똑같은데, 안의 value가 중복일경우 알아서 중복처리를 해서 없앤다.
Map
map은 key에 대응되는 value값이 존재하는 형태의 구조이다. 사전같은 느낌
Map<key 변수타입, value 변수타입> 변수이름 = { A : A1, B:B1, C:C1, D:D1 };
ex) Map<String, int>Score = { '수학' : 95, '국어' : 80, '영어' : 90};
enum
case의 확장판 느낌이고, C의 struct 보다 약간 가벼운 느낌이다.
여러타입들을 모아놓은 타입이고
enum은 main함수 밖에 따로 선언하는데, 우리가 일정 기능을 하는 함수를 밖에 선언해서 묶어놓는것처럼
enum으로 타입들을 모아놓으면 코드를 이해하기도 쉽고 깔끔하게 작성할 수 있다.
다음과 같이 로그인 상태를 저장해놓은 Enum을 선언해 ID Pw의 상태도 확인 할 수 있다.
파라미터 종류
parameter / argument | 매개변수 |
positional parameter | 순서가 중요한 파라미터 |
optional parameter | 있어도 없어도 상관없는 파라미터 |
named parameter | 이름이 있는 파라미터(순서가 중요하지 않음) |
매개변수의 대충은 간단하게 다음과 같이 있다.
함수에 변수를 넣기 위해선 함수옆에(변수1, 변수2 ...) 넣는건 다들 알것이다.
그런데 이 변수에 '[ ]' 대괄호를 씌우면, optional parameter로 처리되어 꼭 그 변수를 넣지 않아도 된다는 뜻이고,
이를 이용해 어떤 변수는 기본값을 넣는 처리를 할 수 있다.
중괄호 안의 변수는 named parameter 처리가 되고 required를 꼭 넣어야한다.
required를 넣지 않으면, optional parameter가 되어 기본값을 넣어줘야한다.