Dart 언어 기본기
2022. 10. 2. 16:34ㆍ프로그래밍 언어/Flutter
느낀점
- java와 다르게 Wrapper 클래스가 없네? List<int> 사용
- 처음 보는 ?? 문법 / enum
- final 과 const 차이 처음 알음
- print는 파이썬 스럽다.
- typedef + arrow function 유용하다!
출처: Dart #1.기본기 : [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
print 출력 팁 $
String name ='레드벨벳';
String name2 = '슬기';
print(name + name2);
print(name+' ' + name2);
// '${변수명}'
print('${name} ${name2}');
print('$name $name2');
변수 Type
var, dynamic 은 오른쪽의 값으로 type을 유추한다.
// 값 초기화시 type이 변하는 dynamic
dynamic name ='코드팩토리';
// 문제없음.
dynamic name= 2;
//최초 초기화시 type을 따라가는 var
var name2 ='블랙핑크';
// 안됨.
name2 =5;
Null 로 초기화 가능하게 하는법 : Type 뒤에 ?을 붙혀라.
( !을 붙히면 null 이 아니라는것을 의미 : 표시용 )
// nullable -null 이 될수 있다.
// non-nullable - null이 될수없다.
// null -아무런 값도 있지 않다.
String name ='코드팩토리';
print(name);
// ?을 붙히면 null 로 초기화 가능
String? name2 ='블랙핑크';
name2 =null;
print(name2);
name2 ='null 아님';
print(name2!);
Final 과 const 차이점
//final 은 빌드 타입의 값을 몰라도 됨
final DateTime now= DateTime.now();
print(now);
//const 는 빌드 타입의 값을 알아야됨
// DateTime.now 는 빌드 순간에 값이 정해지기 때문에 값을 알수 없기때문에 에러가 난다.
const DateTime now2 =DateTime.now();
print(now2);
만약 변수 값이 null 이라면 값 변경 해라 : '??'
//null
double? number =4.0;
print(number);
number =2.0;
print(number);
number =null; // 주석처리
print(number); // 주석처리
// number가 null 이면 값을 3으로 바꿔라.
number??=3.0;
print(number);
not 쓰는법
int n =1;
print(n is int);
print(n is String);
print(n is! int);
print(n is! String);
자료구조
List<>
List<String> blackPink =['제니','지수'];
print(blackPink.length);
blackPink.add('코드팩토리');
print(blackPink);
blackPink.remove('지수');
print(blackPink);
print(blackPink.indexOf('코드팩토리'));
Map<String, bool>
//Map
// key / Value
Map<String,String> dictionary ={
'kim':'김',
'Ron':'론',
'Moon':'문',
};
print(dictionary); // {kim: 김, Ron: 론, Moon: 문}
Map<String,bool> isdict ={
'kim':true,
'Ron':true,
'Moon':true,
};
print(isdict); // {kim: true, Ron: true, Moon: true}
// 요소 추가 방법 2가지
isdict.addAll({
'spider': false,
});
isdict['Hulk']=false;
print(isdict); //{kim: true, Ron: true, Moon: true, spider: false, Hulk: false}
print(isdict['spider']);// false
Map<String,bool> isdict ={
'kim':true,
'Ron':true,
'Moon':true,
};
isdict.remove('kim');
print(isdict); // {Ron: true, Moon: true}
print(isdict.keys); // (Ron, Moon)
print(isdict.values); // (true, true)
Set<>
// Set
final Set<String> names ={
'code',
'dode',
'fode',
'code',
};
print(names);// {code, dode, fode}
names.add('jenny');
print(names); //{code, dode, fode, jenny}
names.remove('jenny');
print(names); // {code, dode, fode}
print(names.contains('code')); // true
함수
enum
정확히 몇개의타입만 있을때 사용하면 좋음
-> Status status =approved; 보다 = Status.approved가 나은점
1. 오타시 시스템 오류로 인지 가능 , 오타시 else 로 갈수도 있음
2. 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('거절');
}
}
Function 기본
void main() {
addNumbers(10,20,30);
addNumbers(10);
addNumbers(10,20,40);
}
// 3개의 숫자를 더하고 짝수, 홀수인지 알려주는 함수
// parameter / argument 매개변수
// positional parameter =순서가 중요한 파라미터
// optional parameter - 있어도 되고 없어도 되는 파라미터 : [] 안의 초기화를 해주면 안넣어도 됨
addNumbers(int x, [int y =20, int z =30] ){
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if((sum %2 ==0)){
print('짝수입니다.');
}else{
print('홀수입니다.');
}
}
named Parameter
void main() {
addNumbers2(x:10,y:20,z:30);
addNumbers2(y:20,x:10,z:30);
addNumbers2(x:10,y:20);
}
// named parameter - 이름있는 파라미터 (순서가 중요하지 않다.)
addNumbers2(
{
required int x,
required int y,
int z=40, // optional parameter
}
){
int sum = x + y + z;
print('x : $x');
print('y : $y');
print('z : $z');
if((sum %2 ==0)){
print('짝수입니다.');
}else{
print('홀수입니다.');
}
}
// arrow function
int addNumbers3(int x,int y,int z) => x+y+z;
typedef operation 쓰는법
calculate 함수 처럼 쓴다.
void main() {
Operation operation =add;
int sum = operation(10,20,30);
print(sum); //60
operation = substract;
int sub = operation(10,20,30);
print(sub); //-40
int result = calculate(10,20,30,add);
print(result); //60
int result2 = calculate(10,20,30,substract);
print(result2); // -40
}
// signature
typedef Operation = int Function(int x, int y, int z);
//더하기
int add(int x,int y,int z) => x + y + z;
//빼기
int substract(int x,int y,int z) => x - y - z;
//계산
int calculate(int x,int y, int z , Operation operation ){
return operation(x,y,z);
}
'프로그래밍 언어 > Flutter' 카테고리의 다른 글
Dart 4 비동기 프로그래밍 (0) | 2022.10.03 |
---|---|
Dart 3 함수형 프로그래밍 (0) | 2022.10.03 |
Dart 2 객체지향 프로그래밍 (0) | 2022.10.02 |
flutter 2강 (0) | 2022.10.02 |
flutter 설치 (0) | 2022.09.27 |