카테고리 없음

dart 문법 3

sping2 2025. 1. 13. 20:49

함수

String sayHello(String name) {
	return "Hello, $name nice to meet you!";
}

num plus(num a, num b) => a + b;

void main() {
	print(sayHello('Jane'));
	print(plus(1, 2));
}

named parameters

String sayHello({  // default value나 required를 써줘야 한다.
	String name = 'anon',
	int age = 99,
	String country = 'uk',
	}) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	print(sayHello(
		age: 12,
		country: 'korea',
		name: 'Jane',
	));
}
  • positional parameter와 달리, named parameter를 사용하면 파라미터의 위치를 기억하지 않아도 된다.
  • 파라미터가 3개 이상일 땐 named parameter를 사용하자

<required>

String sayHello({
	required String name,
	required int age,
	required String country,
	}) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	print(sayHello(
		age: 12,
		country: 'korea',
		name: 'Jane',
	));
}

optional positional parameters

String sayHello(String name, int age, [String? country = 'cuba']) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	var results = sayHello('nico', 12);
	print(results);
}

QQ operator

1. ??

String capitalizeName(String name) => name.toUpperCase();

void main() {
	capitalizeName('nico');
	capitalizeName(null);
}

→ capitalizeName(null); 에서 에러 발생.

<해결방법>

String capitalizeName(String? name){
	if(name != null){
		return name.toUpperCase();
	}
	return 'ANON';
}

→ (더 짧게)

String capitalizeName(String? name) =>
name != null ? name.toUpperCase() : 'ANON';

→ (더 짧게)

String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';

left ?? right left가 null이면 right을 리턴.

2. ??=

void main() {
	String? name;
	name ??= 'nico'; // name이 null이라면 nico를 할당해라.
	name = null;
	name ??= 'another';
	print(name); // another
}

typedef

자료형이 헷갈릴 때 alias를 만드는 방법.

List<int> reverseListOfNumbers(List<int> list) {
	var reversed = list.reversed;
	return reversed.toList();
}

List<int>를 아래와 같이 바꿀 수 있다.

typedef ListOfInts = List<int>;

ListOfInts reverseListOfNumbers(ListOfInts list) {
	var reversed = list.reversed;
	return reversed.toList();
}

자료형이 복잡할 때 사용하면 좋음.