Study/Development
[개발일지] Dart 입문 1: 언어 기본
titann
2022. 8. 17. 23:01
<인프런 코드팩토리 강의 수강일지>
1. 변수 선언 / 자료형
void main() {
var name = 'John'; // variable: 변수
int num1 = 10; // integer: 정수
double num2 = 2.5; // 실수
bool isTrue = true; // Boolean: 맞다, 틀리다
String lastname = 'Smith'; // 문자
dynamic myname = 'legend'; // 다양한 자료형 가능, 자료형 종류 변경 가능
myname = 0; //
// 출력하기
print(name + lastname); // JohnSmith
print(name.runtimeType); // String
print('${name.runtimeType} ${lastname}'); // String Smith - 변수 + 문자
print('$name $lastname'); // John Smith 변수 하나만 사용하는 경우 {}생략 가능
print(myname); // 0
// 연산하기
print(num1 + num2); // 12.5
print(num1 - num2); // 7.5
print(num1 / num2); // 4
print(num1 * num2); // 25
}
2. nullable / non-nullable
void main() {
// nullable - null이 될 수 있다.
// non-nullable - null이 될 수 없다.
// null 아무 값도 있지 않다.
String name = 'John Smith';
print(name); // null 값을 넣을 수 없다.
String? name2 = 'black pink'; // 어떤 타입이든 ?를 붙이면 null 값도 저장 가능
print(name2!); // !를 사용할 때, 현재 이 값은 null이 아니다 가능
}
void main() {
double? num2 = 4.0;
print(num2); // 4
num2 = 2.0;
print(num2); // 2
num2 = null;
print(num2); // null
num2 ??= 3.0; // ??= : null일 경우 우측 값으로 바꿔라
print(num2); // 3
}
3. final/const로 선언하기
void main() {
final name = 'John'; // = final String name과 동일
// name = 'Adam'; --> final로 선언하면, 변수 변경 불가능
const name2 = 'Smith'; // const String name과 동일
final DateTime now = DateTime.now(); // build time의 값을 몰라도 된다.
const DateTime now2 = DateTime.now(); // error: build time의 값을 알아야만 한다
}
4. ++, --
void main() {
int num = 2;
num++;
print(num); // 2+1 = 3
num--;
print(num); // 3-1 = 2
}
5. 비교하기
void main() {
int num1 = 1;
int num2 = 2;
print(num1 > num2); // false
print(num1 < num2); // true
print(num1 >= num2); // false
print(num1 <= num2); // true
print(num1 == num2); // false
print(num1 != num2); // true
}
6. 자료형 확인하기
void main() {
int num1 = 1;
print(num1 is int); // 정수인가? true
print(num1 is String); // String인가? false
print(num1 is! int); // 정수가 아닌가? false
print(num1 is! String); // String이 아닌가? true
}
7. and / or 조건
void main() {
// && - and 조건
// || - or 조건
bool result = 12 > 10 && 1 > 0; // o o
print(result); // true
bool result2 = 12 > 10 && 0 > 1; // o x
print(result2); // false
bool result3 = 12 > 10 || 1 > 0; // o o
print(result3); // true
bool result4 = 12 > 10 || 0 > 1; // o x
print(result4); // true
bool result5 = 12 < 10 || 0 > 1; // x x
print(result5); // false
}
8. 리스트 []
void main() {
// List 리스트
List<String> blackPink = ['제니', '로제', '지수', '리사'];
List<int> numbers = [1, 2, 3, 4, 5, 6];
print(blackPink);
print(numbers);
// index: 순서, 0부터 시작
print(blackPink[0]); // 제니
print(blackPink[1]); // 로제
print(blackPink[2]); // 지수
print(blackPink[3]); // 리사
print(blackPink[4]); // error
}
9. 맵{}
void main() {
// Map: Key / Value
Map<String, String> dic = {
'Harry': '해리',
'Ron': '론',
'Hermione': '헤르미온느',
};
print(dic); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느}
Map<String, bool> isHarryPotter = {
'Harry': true,
'Ron': true,
'Ironman': false,
};
print(isHarryPotter); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느}
isHarryPotter.addAll({
'Spiderman': false,
}); // {}내의 자료들 전부 추가하기
print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false}
print(isHarryPotter['Ironman']); // false
isHarryPotter['Hulk'] = false; // 1개 추가하기
print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false, Hulk: false}
isHarryPotter['Spiderman'] = true; // value 변경하기
print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: true, Hulk: false}
}
10. 세트 {}: 리스트와 유사, 중복 값 포함 불가
void main() {
// Set
final Set<String> names = {
'apple',
'banana',
'carrot'
};
print(names); // {apple, banana, carrot}
names.add('dog');
print(names); // {apple, banana, carrot, dog}
names.remove('dog');
print(names); // {apple, banana, carrot}
print(names.contains('carrot')); // 포함 검사: true
}
11. if
void main() {
// if 문
int num = 3;
if(num % 3 == 0){
print('나머지가 0입니다');
} else if(num % 3 == 1){
print('나머지가 1입니다');
} else{
print('나머지가 2입니다');
}
}
12. switch
void main() {
// switch 문
int num = 3;
switch (num % 3) {
case 0:
print('나머지가 0입니다');
break;
case 1:
print('나머지가 1입니다');
break;
default:
print('나머지가 2입니다');
break;
}
}
13. loop: for loop
void main() {
// for loop
for (int i = 0; i < 10; i++) {
print(i); // 0 ~ 9 출력
}
// list 사용하기
int total = 0;
List<int> numbers = [1, 2, 3, 4, 5, 6];
for (int i = 0; i < numbers.length; i++) {
total += numbers[i];
}
print(total); // 21
// for in loop
total = 0;
for (int number in numbers) {
total += number;
}
print(total); // 21
}
14. loop: while loop
void main() {
// while loop
int total = 0;
while (total < 10) {
total += 1;
}
print(total); // 10
// do-while: 잘 사용 안함
total = 0;
do {
total += 1;
} while (total < 10);
print(total); // 10
}
void main() {
// while loop - break
int total = 0;
while (total < 10) {
total += 1;
if (total == 5) {
break;
}
}
print(total); // 5: total이 5가 됐을 때 break
}
15. loop: break & continue
void main() {
// for loop - break
int total = 0;
for (int i = 0; i < 10; i++) {
total += 1;
if (total == 5) {
break; // if 조건 충족했을때 종료
}
}
print(total); // 5
// for loop - continue
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue; // if 조건 충족했을 때, 건너뜀
}
print(i); // 5 제외하고 출력
}
}
16. enum 선언
- 제한된 값만 사용할 수 있도록 함
enum Status {
approved, // 승인
pending, // 대기
rejected, // 거절
}
void main() {
Status status = Status.pending;
if (status == Status.approved) {
print('승인입니다.');
} else if (status == Status.pending) {
print('대기입니다.');
} else {
print('거절입니다.');
}
}
17. 함수
void main() {
addNumbers(10, 20, 11);
}
// 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
addNumbers(x, y, z) {
int sum = x + y + z;
print('x:$x');
print('y:$y');
print('z:$z');
if (sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
void main() {
addNumbers(10, 20, 11);
addNumbers2(10, 20);
addNumbers3(y: 20, z: 30, x: 11);
}
// 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수
// parameter / argument - 매개변수
// positional parameter - 순서가 중요한 파라미터
addNumbers(int x, int y, int z) {
int sum = x + y + z;
print('x:$x');
print('y:$y');
print('z:$z');
if (sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
// optional parameter - 있어도 되고 없어도 되는 파라미터
// 기본값 지정 가능
addNumbers2(int x, [int y = 0, int z = 0]) {
int sum = x + y + z;
print('x:$x');
print('y:$y');
print('z:$z');
if (sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
// named parameter - 이름이 있는 파라미터
addNumbers3({
required int x,
required int y,
required int z,
}) {
int sum = x + y + z;
print('x:$x');
print('y:$y');
print('z:$z');
if (sum % 2 == 0) {
print('짝수입니다.');
} else {
print('홀수입니다.');
}
}
18. typedef
- 함수를 미리 시그니처화 해서 여러가지 함수를 유용하게 사용
void main() {
Operation operation = add;
int result = operation(10, 20, 30);
print(result);
operation = sub;
int result2 = operation(10, 20, 30);
print(result2);
int result3 = cal(30, 40, 50, add);
print(result3);
int result4 = cal(40, 50, 60, sub);
print(result4);
}
// 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 cal(int x, int y, int z, Operation operation) {
return operation(x, y, z);
}
반응형