개념은얼레벌레하지말자..
변수선언
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 |