반응형
함수 기본 선언 방식
// 일반적인 함수 선언
String sayHello(String name) {
return "Hello, $name nice to meet you!";
}
// 바로 리턴할 경우 람다식으로 축약 가능 fat arrow syntax
String sayHello2(String name) => "Hello, $name nice to meet you!";
// 수식 함수에 fat arrow syntax 적용
num plus(num a, num b) => a + b;
void main() {
print(sayHello2('nico'));
print(plus(2,3));
}
Named Parameters
named argument로 파라미터에 이름을 지정({}로 감싸고 오브젝트를 넘기듯이 함수 호출)
default argument로 기본값 지정 가능
required prefix로 반드시 넘겨야하는 파라미터 지정 가능
// 일반적인 함수 선언
String sayHello(String name, int age, String country) {
return "Hello, $name, you are $age, and you com from $country";
}
// named parameters 및 default parameters 적용
String sayHello2({
String name = 'babo',
int age = 10,
String country = '강릉'}) {
return "Hello, $name, you are $age, and you com from $country";
}
// named parameters 및 required
String sayHello3({
required String name,
required int age,
required String country}) {
return "Hello, $name, you are $age, and you com from $country";
}
void main() {
print(sayHello('nico', 29, '서울'));
print(sayHello2(
age: 12,
country: 'cuba',
name: 'nannom',
));
print(sayHello3(
age: 12,
country: 'cuba2',
name: 'nannom2',
));
}
Optional Positional Parameters
Optional(nullable) 파라미터를 받도록 하는 것.
파라미터를 옵셔널 문자(= ?)를 붙이고 파라미터 앞뒤로 []로 감싼다.
// 일반적인 함수 선언
String sayHello(
String name,
int age,
[String? country] // optional augement
) => "Hello, $name, you are $age, and you com from $country";
void main() {
print(sayHello('nico', 29, '서울'));
print(sayHello('nico2', 19)); // Hello, nico2, you are 19, and you com from null
}
QQ Operator
Question Question Operator의 준말.
left ?? right 로, left가 null이 아니면 left를, null이면 right를 리턴한다.
번외로 QQ equals문법도 존재.
Optional한 변수에 값을 할당할 때
optionalVariable ??= value;
라고 사용하면 optionalVariable이 null일 때만 value가 optionalValue에 할당된다.
String capitalizeName(
String? name
) => (name != null) ? name : "defaultName";
// QQ Operator
String capitalizeName2(
String? name
) => name ?? "defaultName";
void main() {
capitalizeName('babo');
// QQ equals Operator
String? name;
name ??= 'nico';
name ??= 'another'; // name이 null이 아니기 때문에 실행되지 않는다.
print(name);
}
typedef
임의의 자료형에 이름을 부여해 사용할 수 있다.
// 타입별명 부여
typedef ListOfInts = List<int>;
List<int> reverseListOfNumbers(List<int> list) {
return list.reversed.toList();
}
ListOfInts reverseListOfNumbers2(ListOfInts list) {
return list.reversed.toList();
}
void main() {
print(reverseListOfNumbers([1,2,3]));
print(reverseListOfNumbers2([1,2,3,4,5,6]));
}
반응형
댓글