안녕하세요 성장형 개발자입니다.
플러터 공부 중입니다
오늘 공부한 내용을 적어보았습니다
공부한 내용 : flutter 기초 문법
1. 주석 작성
// 한 줄 주석
/*
* 여러 줄 주석
* 중간 줄 시작으로 *를 사용
*/
/// 슬래시 세개는 문서 주석
2. 콘솔 출력
print() 문자열 출력
3. 변수 선언
var 변수명 = 값;
자동으로 타입을 추론하는 기능을 제공
타입을 한 번 유추하면 추론된 타입이 고정 -> 고정이 된 변수에 다른 타입의 변수를 저장 시 에러 발생
dynamic 변수 = 값;
사용하면 변수의 타입이 고정되지 않아서 다른 타입도 저장 가능
final, const 키워드는 변수의 값을 처음 선언 후에는 변경 할 수 없음
final -> 런타임(실행을 해봐야 값을 알 수 있음)
const -> 빌드타임
실행될 때 확정 : final
코드를 실행하지 않은 상태 값이 확정 : const
4. 변수 타입
모든 변수는 고유의 변수 타입을 가지고 있음.
var 키워드를 사용하면 자동으로 변수 타입 유추 가능하지만 직접적으로 변수 타입을 명시해주면 코드가 더욱 직관적으로 되고 유지보수에 편하다 -> 직접 타입을 지정해야 하는게 좋다
다트는 프로그램 시작점(엔트리 함수 기호) : main()
컬렉션 : 여러 값을 하나의 변수에 저장할 수 있는 타입 -> 서로의 타입을 자유롭게 형변환이 가능하다는 장점
ㅇ List : 여러 값을 순서대로 저장
-> 리스트명[인덱스] : 인덱스는 원소의 순번(제일 첫 원소 0, 마지막 원소 -1)
-> 리스트 길이 : 리스트명.length
-> add() : List에 값을 추가할 때 사용, 추가 시 리스트의 끝에 추가 된다.
-> where() : 리스트의 값들을 순서대로 순회하면서 특정 조건에 맞는 값만 필터링하는데 사용
-> map() : 리스트의 값들을 순서대로 순회하면서 값을 변경 가능, 반환하는 값이 현재값을 대체
-> reduce() : 리스트의 값들을 순서대로 순회, 순회할때마다 값을 쌓아감. 실행되는 리스트 요소들의 타입이 같아야함
-> fold() : reduce() 함수와 실행되는 논리는 같음. 어떠한 타입이든 반환 가능(reduce와 다른 점)
ㅇ Map : 특정 키값을 기반으로 빠르게 값을 검색(key : value) -> 원하는 값을 빠르게 찾는데 중점
ㅇ Set : 중복된 데이터를 제거할 때 사용(중복 없는 값들의 집합)
-> 중복을 방지하므로 유일한 값들만 존재하는 걸 보장
ㅇ enum : 한 변수의 값을 몇가지 옵션으로 제한, 선택지가 제한적일 때 사용
-> 기본적으로 자동 완성이 지원, 정확히 어떤 선택지가 존재하는지 정의해둘 수 있기에 유용(ex. 시작, 진행 중, 종료)
연산자
ㅇ 기본연산자, 값 비교 연산자, 논리 연산자는 알고 있는 부분이라서 따로 안적음
ㅇ null 관련 연산자
-> 다트 언어에서는 변수 타입이 null값을 가지는지 여부를 직접 지정해줘야 함
-> 타입 키워드를 그대로 사용하면 기본적으로 null값이 저장될 수 없음
-> 타입 뒤에 ? 를 추가해줘야 null값 저장 가능(ex. double? testnum = 1;)
-> ?? 를 사용하면 null일 때만 값이 저장
ㅇ 타입 비교 연산자
-> is 키워드를 사용하면 비교 가능
제어문 (크게 다른 것 없음)
ㅇ if
ㅇ switch
-> case 끝에 break 키워드 무조건 사용(빼먹으면 컴파일 중 에러 발생)
-> enum과 함께 사용하면 유용
ㅇ for
-> 다트에서는 for...in 패턴도 제공
함수와 람다
ㅇ 함수의 일반적 특징
-> 한번만 작성하고 여러 곳에서 재활용 가능
-> 반환할 값이 없는 경우는 void키워드 사용
-> required 키워드 : 매개변수가 null값이 불가능한 타입이면 기본값을 지정해주거나 필수로 입력해야 한다는 의미
-> 포지션널 파라미터 사용시 [] 사용
ㅇ 익명함수, 람다함수
-> 둘 다 함수 이름이 없음
-> 일회성을 사용
-> 익명 함수 {} 람다 함수 =>
-> 람다 함수는 => 단 하나의 스테이트먼트 -> 간결한 코드 작성 가능, 가독성 높음, 일회성이 높은 로직을 작성할 때 주로 사용(map, reduce, fold)
ㅇ typedef
-> 함수의 시그니처를 정의하는 값
-> 함수 선언부를 정의하는 키워드
-> 함수가 무슨 동작을 하는지에 대한 정의는 없음
-> 다트에서 함수는 일급 객체 -> 함수를 값처럼 사용 가능
ㅇ try~catch
-> try와 catch 사이의 괄호에 에러가 없을 때 실행할 로직을 작성, catch가 감싸는 괄호는 에러가 났을 때 실행할 로직 작성
-> try로직에서 에러가 나면 이후 로직 실행되지 않고 바로 catch 로직으로 넘어감
-> throw 키워드 사용해서 고의적 에러 발생 가능
- 저자
- 최지호(코드팩토리)
- 출판
- 골든래빗(주)
- 출판일
- 2023.01.01
'개발기록 > Flutter' 카테고리의 다른 글
[flutter log] 플러터 기본 위젯 (0) | 2023.01.17 |
---|---|
[flutter log] 플러터 소개 및 구조 (0) | 2023.01.17 |
[flutter log] 다트 비동기 프로그래밍 (0) | 2023.01.11 |
[flutter log] 객체지향 프로그래밍 (0) | 2023.01.11 |
[flutter log] flutter를 하게 된 계기 및 계획 (0) | 2023.01.09 |