**출처 : 인프런 강좌 'Dart 언어 4시간만에 완전정복'의 1강 기본기 강의 내용을 정리한 script 입니다.
enum Status {
approved,//승인
pending, //대기
rejected,//거절
}
void main() {
//1. var 과 dynamic
//var : 다양한 타입 수용가능 but 초기 타입은 변경할수 x //dynamic : 다양한 타입 수용가능 타입 변경가능
dynamic name = '코드';
var name2 = '재밌다';
print ('$name ${name.runtimeType} ${name2.runtimeType}');
name = 5; // dynamic은 타입변경 ok
//name2 = 5; //var 는 타입 변경 x
print ('$name ${name.runtimeType} ${name2.runtimeType}');
//2.null수용 가능
//String sub = '코드';//null 불가
String? sub = '코드'; //null 가능
sub = null;
print(sub);
//3.final, const : 값 변경 x, 타입생략가능
//final const 차이점 :빌드타임 값을 알고있어야하는지(const는 알고 있어야함)-대표예시 DateTime
//ex final DateTime now = DateTime.now();
//ex const DateTime now2 = DateTime.now2(); //에러발생
//4.??= : 변수가 null일경우 오른 쪽값으로 변경
double? number = 1.2;
number = null;
number ??= 3.1;
print (number);
//5.타입확인하기
int number1 = 1;
print(number1 is int);
print(number1 is !String);
//6.list<type>
List<String> blackPink = ['제니','로사'];
print(blackPink[1]);
print(blackPink.length);
blackPink.add('민지');
blackPink.remove('로사');
print(blackPink.indexOf('제니'));
//7.map - key,value의<type>
Map<String,bool> dictionary = {
'Harry Porter':true,
'Rone Wisely' :false
};
dictionary.addAll({
'Spiderman' : false
});
dictionary['Hulk'] = true;
print(dictionary['Hulk']);
dictionary.remove('Hulk');
print(dictionary.keys);
//8.Set - List에서 중복제거
Set<String> blackPink2 = {'제니','로사','로사'};
print(blackPink2);
print(blackPink2.contains('제니'));
//9.switch case break continue
int number3 = 1;
switch(number3%3){
case 0:
print('나머지가 0');
break;
case 1:
print('나머지가 1');
break;
default:
print('나머지가 2');
break;
}
//10.loop - for , for in, while
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);
total =0;
for(int number in numbers){
if(number ==5) continue;
total +=number;
}
print(total);
total = 0;
while(total<10){
total +=1;
if(total == 5){
break;
}
}
print(total);
//11.enum (정해진 타입만 쓸수 있게 강제함)
Status status = Status.approved;
if(status == Status.approved){
print('진행중');
}else if(status == Status.pending){
print('대기중');
}else{
print('거절');
}
//12.함수 선언법
// addNumbers(10,20,30);
// addNumbers(10);
// addNumbers(x:10,y:20,z:30);
int result = addNumbers(y:20,z:30);
print(result);
//12-7.operation 함수 (signature화 시킴)
int result1 = calculate(10,20,30,add);
int result2 = calculate(10,20,30,substract);
print('$result1 $result2');
}
//12. 세개의 숫자 (x,y,z)를 더하고 짝수 홀수 알려주는 함수
//12-1.basic parameter
//12-2.optinal parameter (있어도 없어도 되는 파라미터 =>대괄호로 표시)
//12-3.named parameter : 순서 중요하지 않은 이름 있는 파라미터
//12-4.named parameter에서 optional parameter 사용
//12-5.함수 앞에 타입 지정시 return 값 필요
//12-6.arrow 함수
//12-1. addNumbers(int x, int y, int z){
//12-2. addNumbers(int x, [int y= 0, int z= 0]){
//12-3.
// addNumbers({
// required int y,
// required int z,
// required int x,
// }){
//12-4.
// addNumbers({
// required int y,
// required int z,
// int x = 0,
// }){
// int sum = x + y + z;
// if(sum % 2 == 0){
// print('짝수');
// }else{
// print('홀수');
// }
// }
//12-5.
// int addNumbers({
// required int y,
// required int z,
// int x = 0,
// }){
// int sum = x + y + z;
// if(sum % 2 == 0){
// print('짝수');
// }else{
// print('홀수');
// }
// return sum ;
// }
//12-6.
int addNumbers({
required int y,
required int z,
int x = 0,
})=> x+y+z;
//12-7.
typedef Operation = int Function(int a, int b, int c);
int add(int a, int b, int c) =>a+b+c;
int substract(int a, int b, int c) => a-b-c;
int calculate(int a, int b, int c, Operation operation){
return operation(a,b,c);
}