728x90
Dart ์ฝ๋ ์จ๋ผ์ธ ์ปดํ์ผ๋ฌ
C++ ์ด๋ ์์ฒญ ๋น์ทํ๋ค ! ์ฌ์ด ์ธ์ด์๊ตฐ...
*์ถ๋ ฅ
void main() {
print('Hello Code Factory');
}
*๋ณ์ ์ ์ธ ๋ฐ ํน์ง
void main() {
// var : ๋ณ์ํ ์์ธก ๋ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
var name = 'Dart';
name = 'newDart';
print(name.runtimeType);
// String
String name2 = 'Dart2';
print('${name} ${name2}');
print('$name $name2'); // ๊ดํธ ์์ ๋ ๊ฒ๋ ๊ฐ๋ฅ
print('$name.runtimeType'); // ๋ณ์์ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ดํธ ํ์. *์ถ๋ ฅ: newDart.runtimeType
// integer
int i = 10;
// double
double d = 10.0;
// Boolean
bool isTrue = true;
// dynamic : var ์ฒ๋ผ ๋ชจ๋ ํ ๊ฐ๋ฅ
// dynamic vs var : var ๋ ๋ค๋ฅธ ํ์ผ๋ก ๊ฐ ๋ณ๊ฒฝ ์๋๊ณ ํ์ด fix๋จ. dynamic ์ ๋ค๋ฅธํ์ผ๋ก ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํจ
dynamic dyn = 'newnewDart';
dyn = 2; // ๊ฐ๋ฅ
//name = 5; // ์ค๋ฅ!
}
*๋ณ์ ํค์๋
void main() {
// nullable : null ์ด ๋ ์ ์๋ค.
// non-nullable : null ์ด ๋ ์ ์๋ค.
// null : ์๋ฌด๋ฐ ๊ฐ์ด ๋ค์ด ์์ง ์๋ค.
String str = 'str';
//str = null; // error !
String? str2 = 'str2';
str2 = null; // ok !
// ! : null ์ด ์๋์ ๋ณด์ฅํ๋ค๋ ๋ป
String? str3 = 'str3';
print(str3!);
// final: final ๋ก ์ ์ธํ๋ฉด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
// ๋ณ์ํ ์๋ต ๊ฐ๋ฅ. final name = 'Dart'; ๋ ๊ฐ๋ฅ.
// Build ํ์์ ๊ฐ์ ์๊ณ ์์ง ์์๋ ๋๋ค.
final String name = 'Dart';
print(name);
//name = 'new Dart'; // error!
// const: const ๋ก ์ ์ธํ๋ฉด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
// ๋ณ์ํ ์๋ต ๊ฐ๋ฅ. const name2 = 'Dart2'; ๋ ๊ฐ๋ฅ.
// Build ์๊ฐ์ ๊ฐ์ ์๊ณ ์์ด์ผ ํ๋ค. ์ฆ, ์ ์ธ ์๊ฐ์ ์ด๊ธฐํ๊ฐ ๋์ด ์์ด์ผ ํ๋ค.
const String name2 = 'Dart2';
//name2 = 'new Dart'; // error!
// DateTime : ์ฝ๋ ๋ฌธ์ฅ์ด ์คํ๋๋ ์๊ฐ์ ์๊ฐ ์ถ๋ ฅ
final DateTime now = DateTime.now();
print(now); // 2024-04-21 23:32:37.310
//const DateTime now2 = DateTime.now(); // error!
// operator
double? number = 4.0;
number ??= 3.0; // number ๊ฐ 0 ์ด๋ฉด ์ค๋ฅธ์ชฝ ๊ฐ์ผ๋ก ๋ฐ๊พธ๋ผ๋ ๋ป.
print(number); // 4;
// is : ํ์
๋น๊ต
print(number is double); // true
print(number is! String); // true
}
*List ์๋ฃ๊ตฌ์กฐ
void main() {
//List
List<String> stringList = ['name1', 'name2', 'name3', 'name4'];
List<int> intList = [1, 2, 3, 4];
print(stringList); // [name1, name2, name3, name4]
print(intList); // [1, 2, 3, 4]
print(stringList.length); // 4
print(stringList.reversed); // (name4, name3, name2, name1)
print(stringList.first); // name1
print(stringList.indexOf('name1')); // 0
print(stringList.isEmpty); // false
//...
stringList.add('name5');
stringList.remove('name3');
}
*Map ์๋ฃ๊ตฌ์กฐ
void main() {
// Map
// Key / Value
Map<String, String> dictionary = {
'key1':'value1',
'key2':'value2',
'key3':'value3',
};
print(dictionary);//{key1: value1, key2: value2, key3: value3}
// ๊ฐ ์ถ๊ฐ
// 1๋ฒ ๋ฐฉ๋ฒ
dictionary.addAll({
'key4':'value4'
});
print(dictionary);//{key1: value1, key2: value2, key3: value3, key4: value4}
// 2๋ฒ ๋ฐฉ๋ฒ
dictionary['key5'] = 'value5';
// ๊ฐ ์ ๊ทผ
print(dictionary['key1']); // value1
// ๊ฐ ๋ณ๊ฒฝ
dictionary['key1'] = '';
print(dictionary);//{key1: , key2: value2, key3: value3, key4: value4, key5: value5}
// ๊ฐ ์ญ์
dictionary.remove('key1');
print(dictionary); //{key2: value2, key3: value3, key4: value4, key5: value5}
print(dictionary.keys); //(key2, key3, key4, key5)
print(dictionary.values); //(value2, value3, value4, value5)
}
*Set ์๋ฃ๊ตฌ์กฐ
void main() {
// Set : Map์ด๋ ๋น์ทํ๋ฐ ์ค๋ณต์๋จ. Map ์ ๊ฐ ์ค๋ณต๊ฐ๋ฅ.
final Set<String> names = {
'name1',
'name2',
'name3',
'name1'
};
print(names); //{name1, name2, name3} <- ์ด๋ ๊ฒ ์ค๋ณต ์์์ ์ง์์ค.
names.add('name4');
names.remove('name1');
print(names.contains('name1')); //false
}
* ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ(if, for, while)
void main() {
// if ๋ฌธ
int number = 3;
if(number % 3 == 0){
print('๋๋จธ์ง 0');
} else if(number % 3 == 1){
print('๋๋จธ์ง 1');
} else{
print('๋๋จธ์ง 2');
}
// switch
switch(number % 3){
case 0:
print('๋๋จธ์ง 0');
break;
case 1:
print('๋๋จธ์ง 1');
break;
default:
print('๋๋จธ์ง 2');
break;
}
// for loop
for(int i = 0; i < 10; i++){
}
List<int> numbers = [1,2,3,4,5];
for(int n in numbers){
}
// while loop
int total = 0;
while(total < 10){
total += 1;
}
print(total); //10
total = 0;
do{
total += 1;
}while(total < 10);
print(total); //10
}
*enum
enum Status{
approved,
pending,
rejected
}
void main() {
Status status = Status.pending;
switch(status){
case Status.approved:
break;
case Status.pending:
break;
case Status.rejected:
break;
default:
print('error');
break;
}
}
*ํจ์
// ํจ์
void main() {
addNumbers(10);
multipleNumbers(x: 1, y: 2, z: 3);
multipleNumbers(y: 2, x: 1, z: 3); // ์ด๋ฆ์ด ์์ด์ ์์ ๋ฐ๊ปด๋ ์๊ด ์์.
int result = getNumber(1);
}
// positional parameter: ๊ธฐ๋ณธ๊ฐ ํ์์๊ณ ํธ์ถํ ๋๋ ๋ณ์๊ฐ๋ง ๋ฃ์ด์ ํธ์ถํ๋ฉด ๋จ. ์์๋ ์ง์ผ์ผ ํจ.
// [] : optional parameter. ๊ธฐ๋ณธ๊ฐ์ ๋ฃ์ด์ฃผ๊ฑฐ๋ ? ๋ก nallable ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํจ.
addNumbers(int x, [int y = 0, int z = 0]){
int sum = x + y + z;
print(sum);
}
// named parameter : ์ด๋ฆ์ด ์๋ ํ๋ผ๋ฏธํฐ. ์์๊ฐ ์ค์ํ์ง ์๋ค.
// optional parameter ๋ ๊ฐ๋ฅ. ์ด๊ธฐํ ํ๊ฑฐ๋ nullable ์ฒ๋ฆฌ๋ ํด์ค์ผ ํจ.
multipleNumbers({
required int x,
required int y,
int z = 1
}){
int multiple = x*y*z;
print(multiple);
}
// return ํ ํจ์
int getNumber(int x){
return x;
}
// arrow function: ํ์ดํ ํจ์๋ก ๊ฐ๋จํ๊ฒ ํํ ๊ฐ๋ฅ
int getNumber2(int x,{
required int y,
int z = 1
}) => x + y + z;
*typedef ํ์ ์ฐธ์กฐ
//typedef : ํ์
์ฐธ์กฐ
void main() {
Operation operation = add; //๋ณ์์ฒ๋ผ ๋ฃ์ ์ ์์
int result = operation(10, 20, 30);
print(result); //60
operation = substract; //๋ณ์์ฒ๋ผ ๋ฃ์ ์ ์์
int result2 = operation(10, 20, 30);
print(result2); //-40
int result3 = calculate(30, 40, 50, add);
print(result3); // 120
}
// ํ๋ผ๋ฏธํฐ์ ๋ฆฌํดํ์
์ด ์ผ์นํด์ผ ํจ
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) => operation(x, y, z);
728x90