Dart
자료형
1. Collection
- List
배열. 데이터의 순서가 있으며, 중복 허용
- Set
Python
의 셋 자료형과 동일. 데이터의 순서가 없으며, 중복 허용 불가.
- Map
Python
의 딕셔너리 자료형과 동일. 데이터의 순서가 없으며, 키는 중복 불가, 값은 중복 가능.
연산자
1. 기본 연산자
배열. 데이터의 순서가 있으며, 중복 허용
Python
의 셋 자료형과 동일. 데이터의 순서가 없으며, 중복 허용 불가.Python
의 딕셔너리 자료형과 동일. 데이터의 순서가 없으며, 키는 중복 불가, 값은 중복 가능.1. 기본 연산자
~/
: int형 나눗셈, typecast to int
(a / b).truncate().toInt()
와 동일 (버림 -> int typecast
main() {
double a = 3.0;
double b = 1.5;
print(a / b); // 2
}
2. 타입 검사
as : 형 변환
is :
is!
3. Null safety
Null safety는, null
값을 완전 제거하는 것이 목적이 아님. null
자체는 코드에서 문제가 되지 않으나, null
을 통한 메소드 호출이 코드에서는 문제가 됨.
bool isOnlyWhitespace(String string) {
return string.trim() == '';
}
main(){
isOnlyWhitespace(null); // Error
}
위 예시에서, string
변수에 null
값 자체가 문제를 일으키는 것이 아니라, null
이 호출하는 trim() 메소드가 문제를 일으킴.
변수는 null
값을 초기화 값이나, 특정 자료형으로 받을 수 없음.
null
값을 변수에 넣어주기 위해선, null safety 규칙을 지켜야 함.
즉, null safety는 어떤 객체(변수)가 null 값을 허용할 수 있는지, 허용 할 수 없는지 구분하기 위해서 사용함.
위 예시의 isOnlyWhitespace
메소드에서 string
Parameter는 null
값을 허용하지 않는 Non-nullable 변수임. (null
대입 시 컴파일러 에러)
Non-nullable
변수는 정의 동시에 초기화 되어야 함.(null
값을 허용하지 않음)
void main(){
double nonNullable;
double? nullable;
nullable = null; // OK
nonNullable = null; // Error
}
- 특정 변수의 null값 여부 체크
??
,좌항 ?? 우항
-> 좌항의 값이 null이면 우항의 값을 return.
->if null
로 해석
main(){
String name;
print(name ?? "비어있습니다."); // 비어있습니다.
}
- 조건적 프로퍼티 접근
객체 내부에 정의된 메소드나 프로퍼티에 접근하기 위해서는, 객체 자체가Non-nullable
해야 함.
좌항 ?. 우항 : 좌항(객체)이 null이면 null을, 아니면 우항을 return
someObject?.someProperty
// same as
(someObject != null) ? someObject.someProperty : null
// 아래처럼, null인 객체가 들어오더라도, null 처리를 할 수 있다.
void main(){
var p = null;
print(p?.name); // null
}
3. 캐스케이드 표기
TODO
함수
1. 인자(Parameter)
2. 비동기 동작 지원
Future
Future networkRequest() async {
print('start');
await Future.delayed(Duration(seconds : 1));
print('1');
await Future.delayed(Duration(seconds : 1));
print('1');
}
void main() {
print('시작');
networkRequest(); // Asynchronous function
print('끝');
}
Stream
todo
클래스
1. 생성자(Constructor)
참고
Author And Source
이 문제에 관하여(Dart), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@chlrbtlr30/Dart
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Future
Future networkRequest() async {
print('start');
await Future.delayed(Duration(seconds : 1));
print('1');
await Future.delayed(Duration(seconds : 1));
print('1');
}
void main() {
print('시작');
networkRequest(); // Asynchronous function
print('끝');
}
Stream
todo
1. 생성자(Constructor)
참고
Author And Source
이 문제에 관하여(Dart), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@chlrbtlr30/Dart
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(Dart), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chlrbtlr30/Dart저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)