Dart 연습 - Page
Dart String 문서
- 변수 학습
/// Copyright 2022. ⓒ DevStory All rights reserved.
main() {
/// var : 처음 담은 값으로 자료형이 결정 됨
var name = '철수';
print(name); // 철수
print(name.runtimeType); // string (문자)
var age = 20;
print(age); // 20
print(age.runtimeType); // int (정수)
print("="*20);
/// String : 문자만 넣을 수 있음
String address = '우리집';
print(address); // 우리집
// address = 1; // ⬅️ String 만 담을 수 있기 때문에 이 코드는 에러 발생
address = '모두의 집';
print(address); // 모두의 집
print("="*20);
/// String? : 문자 또는 비어있을 수 있음
String? email; // ⬅️ 아무것도 안넣었으므로 비어있음
print(email); // null ⬅️ 비어있음을 의미
email = "a@a.com"; // 문자열 할당
print(email); // a@a.com
email = null; // 다시 비우기
print(email); // null
print("="*20);
dynamic test = 'test';
test = 123;
/// final : 값을 재할당 할 수 없음
final String phone = "010-0000-0000";
print(phone); // 010-0000-0000
// phone = "010-1111-1111"; // final 때문에 이 코드는 실행 불가능
}
- 조건 학습
void main() {
// && : AND 연산자로 좌우 값이 모두 true일 때 전체를 true로 반환
if (false && true) {
print('&&는 하나라도 true가 아니면 실행이 안됩니다.');
} else if (true && true) {
print('&&는 양쪽 모두 true면 실행이 됩니다.');
}
// || : OR 연산자로 둘 중 하나만 true이면 전체를 true로 반환
if (false || false) {
print("||는 둘다 false면 실행이 안됩니다.");
} else if (false || true) {
print("||는 둘 중 하나라도 true면 실행이 됩니다.");
}
int temp = 15;
bool isSummer = true;
if (isSummer && temp < 10) { // 여름이면서 10도 미만입니까?
print("여름 and 10도 미만");
} else if (isSummer || temp < 10) { // 여름이거나 10도 미만입니까?
print("여름 or 10도 미만");
}
}
- 반복문 학습
void main() {
// 과일 5개가 들어있는 배열의 내용을 모두 출력하려면 5번 print를 사용해야 합니다.
List<String> fruits = ["딸기", "감", "배", "사과", "바나나"];
print(fruits[0]);
print(fruits[1]);
print(fruits[2]);
print(fruits[3]);
print(fruits[4]);
print("---- 반복문 ----");
print("fruits.length : ${fruits.length}"); // 전체 배열의 개수
// 반복문을 사용하면 과일의 개수에 상관없이 3줄만 입력하면 됩니다.
for (int i = 0; i < fruits.length; i++) {
print("$i : ${fruits[i]}"); // i가 0부터 fruits.length - 1까지로 변합니다.
}
print("---- for in 문 ----");
// 참고로 for in문이라 불리는 다른 형태의 반복문도 있습니다.
for (String name in fruits) {
print(name); // fruits 배열의 원소를 차례대로 꺼냅니다.
}
}
- 매개변수 학습
void main() {
say("영희", "철수야 안녕?");
}
void say(String from, String message) {
print("$from : $message"); // 영희 : 철수야 안녕?
}
- 매개변수 required 학습()
void main() {
say(from: "영희");
say(from: "영희", message: "안녕?");
say(message: "안녕?", from: "영희"); // 이름을 지정하기 때문에 순서 상관이 전달 가능합니다.
}
// required 키워드가 있는 경우, 호출시 필수로 전달해야 합니다.
void say({required String from, String? message}) {
print("$from : $message");
}
- 함수 return 학습
void main() {
String name1 = getName1();
String name2 = getName2();
print(name1 + name2);
}
// "철수"를 return하는 함수를 화살표 함수를 써서 짧게 축약할 수 있습니다.
String getName1() => "철수";
String getName2() {
return "영희";
}
- class 학습
void main() {
// 인스턴스(instance) 만들기
Bread bread1 = Bread('팥'); // 클래스의 생성자를 호출하여 인스턴스(instance)를 만듭니다.
Bread bread2 = Bread('크림');
// 속성 호출
print(bread1.content); // 팥
print(bread2.content); // 크림
// 메소드 호출
print(bread1.getDescription()); // 맛있는 팥빵입니다.
print(bread2.getDescription()); // 맛있는 크림빵입니다.
}
class Bread {
String? content; // 클래스 속 변수를 속성(property)라고 부릅니다.
Bread(String core) { // 클래스명과 동일한 이 함수를 생성자(constructor)라고 부릅니다.
content = core;
}
String getDescription() { // 클래스 속 함수를 메소드(method)라고 부릅니다.
return "맛있는 $content빵입니다.";
}
}
- 상속 예제
void main() {
Bread bread = Bread();
Cookie cookie = Cookie();
print(bread.madeBy); // TousLesJours
print(cookie.madeBy); // TousLesJours
}
// 빵 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Bread extends TousLesJours {
}
// 쿠키 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Cookie extends TousLesJours {
}
// 뚜레쥬르
class TousLesJours {
String madeBy = "TousLesJours";
}
Dart 공식문서 URL