728x90
변수
- 자료형
- var
- String
- String?
- final String
- 변수명 명명 규칙
- 카멜케이스 사용
- 영문 / _ / $ / 숫자만 사용 가능하고, 숫자로 시작 불가능
자료형
자료형 | |
String | |
int, double | |
bool | |
List<T> | |
Map<K, V> | |
dynamic | 모든 자료형을 담을 수 있음 |
- dynamic 치환법
- dymaicValue as int
연산자
- 산술 연산자 중에 특이한 ~/ 연산자가 있다.
- %: 나머지
- ~/: 몫
- //: 몫과 나머지
함수
- 파라미터
void say(String from, String message) {
print("$from : $message"); // 영희 : 철수야 안녕?
}
- Named Parameter
이름지정 매개변수는 함수 호출시 값을 전달하지 않아도 되므로 7번째 줄에 입력 값을 받는 변수의 타입이 null이 될 수 있도록 String?로 선언되어 있다.
void say({String? from}) {
print("$from : 안녕?");
}
이름지정 매개변수의 값을 필수로 전달하도록 만드는 방법도 있다. 중괄호 안쪽 변수 앞에 required 키워드를 붙여주면 해당 매개변수를 함수 호출시 필수로 전달해야 합니다. 따라서 required 키워드가 붙은 경우 매개변수의 타입을 String?이 아닌 String으로 만들어 줄 수 있다.
void say({required String from}) {
print("$from : 안녕?");
}
클래스
class Product {
String name; // 이름
int price; // 가격
int count; // 개수
bool isSale; // 반값 할인 여부
Product({
required this.name,
required this.price,
required this.count,
required this.isSale
});
}
// 사용법
double totalPrice(List<Product> cart) {
double result = 0;
for (Product product in cart) {
if (product.isSale) {
// 반값 할인 적용
result += (product.price * product.count) * 0.5;
} else {
// 반값 할인 미적용
result += product.price * product.count;
}
}
return result;
}
정렬
자바와 비슷하다.
List<int> sortByPrice(List<int> prices) {
prices.sort();
return prices.reversed.toList();
}
List<int> sortByPrice(List<int> prices) {
prices.sort((a, b) => b.compareTo(a));
return prices;
}
List<Product> sortByPrice(List<Product> cart) {
// 여기에 작성해 주세요.
cart.sort((c1, c2) => c2.price.compareTo(c1.price));
return cart;
}
class Product {
String name; // 이름
int price; // 가격
Product({
required this.name,
required this.price,
});
}
테스트
assert(shopping1 == 18000);
728x90