if
void main() {
// if
int num1 = 10;
if (num1 % 3 == 0){
print("나머지가 0 입니다.");
}else if(num1 % 3 == 1){
print("나머지가 1 입니다.");
}else{
print("나머지가 2 입니다,");
}
}
switch
void main() {
// switch
int num1 = 10;
switch (num1 % 3){
case 0:
print("나머지가 0 입니다.");
break;
case 1:
print("나머지가 1 입니다.");
break;
default:
print("나머지가 2 입니다.");
break;
}
}
for loop
void main() {
// int total = 0;
List<int> nums = [1, 2, 3, 4, 5];
// for (int i = 0; i < nums.length; i++){
// total += nums[i];
// }
// print(total);
int total = 0;
for (int number in nums){
total += number;
}
print(total);
}
for (int i=0; i<nums.length; i++)의 기본적인 방법과 for (int number in nums)의 보다 간단한 방법
while loop
void main() {
int total = 0;
while (total < 10){
total += 1;
if (total == 5){
break;
}
}
print(total);
}
break는 loop를 통째로 종료하지만 continue는 현재 실행하고 있는 loop만 취소하고 다음 i값(위 예시에는 없음)으로 넘어감
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("거절");
}
}
enum type은 한정된 상수값 집합을 나타내기 위해 사용
직관적인 코드 작성에 유용
열거형의 명칭은 첫 문자를 대문자로 쓰는 게 관례
함수
// 3개 숫자 더하고 그 값이 짝수인지 홀수인지 알려주는 함수
#1
void main() {
addNums();
}
addNums(){
int num1 = 10;
int num2 = 20;
int num3 = 30;
int sum = num1 + num2 + num3;
print("num1: $num1");
print("num2: $num2");
print("num3: $num3");
if (sum % 2 == 0){
print("짝수");
}
else {
print("홀수");
}
}
#2
void main() {
addNums(10, 20, 30);
}
addNums(int num1, int num2, int num3){
int sum = num1 + num2 + num3;
print("num1: $num1");
print("num2: $num2");
print("num3: $num3");
if (sum % 2 == 0){
print("짝수");
}
else {
print("홀수");
}
}
위 #1, #2의 결과값은 아래와 같음
num1: 10
num2: 20
num3: 30
짝수
#2 처럼 매개변수 이용 가능
parameter / argment: 매개변수
positional parameter: 순서가 중요한 매개변수
optional parameter: 있어도 되고 없어도 되는 매개변수
named parameter: 이름이 있는 매개변수(순서가 중요하지 않음)
arrow function: 화살표 함수
함수 안 매개변수를 []로 묶어주면 optional parameter가 됨
ex) addNums(int num1, [int num2, int num3])
하지만 여기서 []안 값들에 에러가 남
-> 값이 null일 수도 있는데 int로 선언해주면 null이 못들어가기 때문
이 때는 int num2 = 20, int num3 = 30 처럼 기본값을 설정해주면 됨
ex) addNums(int num1, [int num2 = 20, int num3 = 30])
만약 main()의 addNums(10, 20, 30) 이렇게 설정해주면 optional parameter 값도 main()에서 정의해줬으므로 미리 설정한 기본 값은 무시됨
void main() {
addNums(num1: 10, num2: 20);
}
addNums({
required int num1,
required int num2,
int num3 = 30,
}){
int sum = num1 + num2 + num3;
print("num1: $num1");
print("num2: $num2");
print("num3: $num3");
if (sum % 2 == 0){
print("짝수");
}
else {
print("홀수");
}
}
named parameter에서도 required 사용하느냐, 안하느냐에 따라 optional parameter를 사용할 수 있음
void
return type
void main() {
int res1 = addNums(num1: 10, num2: 20);
int res2 = addNums(num1: 20, num2: 30, num3: 40);
print("result1: $res1");
print("result2: $res2");
print("sum: ${res1 + res2}");
}
addNums({
required int num1,
required int num2,
int num3 = 30,
}){
int sum = num1 + num2 + num3;
print("num1: $num1");
print("num2: $num2");
print("num3: $num3");
if (sum % 2 == 0){
print("짝수");
}
else {
print("홀수");
}
return sum;
}
arrow function
void main() {
int res1 = addNums(num1: 10, num2: 20);
int res2 = addNums(num1: 20, num2: 30, num3: 40);
print("result1: $res1");
print("result2: $res2");
print("sum: ${res1 + res2}");
}
addNums({
required int num1,
required int num2,
int num3 = 30,
}) => num1 + num2 + num3;
=> 이 거 하나로 완전 편해졌다..
typedef
void main() {
Operation operation = add;
int res1 = operation(10, 20, 30);
print(res1);
operation = subtract;
int res2 = operation(10, 20, 30);
print(res2);
}
typedef Operation = int Function(int num1, int num2, int num3);
int add(int num1, int num2, int num3) => num1 + num2 + num3;
int subtract(int num1, int num2, int num3) => num1 - num2 - num3;
함수는 {}안에 수행할 내용을 넣지만 typedef는 그렇지 않음
typedef는 함수를 변수처럼 사용할 수 있게 해 줌
void main() {
Operation operation = add;
int res1 = operation(10, 20, 30);
// print(res1);
operation = subtract;
int res2 = operation(10, 20, 30);
// print(res2);
int res3 = calc(30, 40, 50, add);
print(res3);
int res4 = calc(30, 40, 50, subtract);
print(res4);
}
// signature
typedef Operation = int Function(int num1, int num2, int num3);
int add(int num1, int num2, int num3) => num1 + num2 + num3;
int subtract(int num1, int num2, int num3) => num1 - num2 - num3;
// 아래와 같이 많이 사용
int calc(int num1, int num2, int num3, Operation operation){
return operation(num1, num2, num3);
}
'CS > Flutter | Dart' 카테고리의 다른 글
Dart cascading operator, functional programming (0) | 2023.07.12 |
---|---|
Dart Functional Programming - map, set, reduce, fold (1) | 2023.07.10 |
Dart 상속, static, interface, generic (0) | 2023.07.09 |
Dart OOP - class, instance, getter, setter, private (1) | 2023.07.09 |
Dart 기본 - 변수형 (0) | 2023.07.07 |