void sayHello(String name) {
print('hello $name');
}
// no return
String sayHello2(String name) => 'hello $name';
- named parameter
// 순서없이 변수 전달 가능
// 중괄호를 추가하고 해당 이름을 그대로 사용함
String sayHello({String name, int age, String country}) {
return 'hello $name, $age, and $country';
}
void main() {
sayHello(
age: 12,
country: 'cuba',
name: 'aaaa',
);
}
dart에서 null safety로 값이 빌 경우를 걱정하는데 아래 방법으로 해결한
1) String sayHello({String name, int age, String country}) 코드에서 default값을 적용함
String sayHello({String name = 'an', int age = 99, String country = 'germany'})
2) default 값 적용 안하는 방법
require modifier를 이용함
String sayHello({
required String name = 'an',
required int age = 99,
required String country = 'germany'
})
각 변수 앞에 required를 추가해주면 됨
- optional positional parameters
String sayHello(
String name,
int age,
[String? country = 'country temp']
) => 'Hello $name, $age year old from $country';
void main() {
sayHello('aaa', 12);
}
마지막 country는 필수가 아닐 때, ?로해서 사용할 수 있다.
보통 named argument를 사용함
- QQ operator
?? : 왼쪽 값이 null인지 체크해서 null이 아니면 왼쪽 값 리턴, null이면 오른쪽 값 리턴
String upperName(String? name) => name != null ? name.toUpperCase() : 'ANON';
String upperName2(String? name) => name?.toUpperCase() ?? 'ANON';
??= : 변수 값이 null일 때를 체크해서 값 할당 가능
void main() {
String? name ;
name ??= 'aaaa';
name = null;
name ??= 'another';
print(name);
}
- typedef
자료형에 사용자가 원하는 alias를 사용할 수 있게 함
typedef ListOfInts = List<int>;
typedef userInfo = Map<String, String>;
// 이렇게 사용해도 되지만
// 구조화된 data 형태를 지정하고 싶다 -> class를 사용하는게 낫다
// List<int> reverseList(List<int> list) {
ListOfInts reverseList(ListOfInts list) {
var reversed = list.reversed;
return reversed.toList();
}
void main() {
print(reverseList([1,2,3]));
}
'Programming > Flutter' 카테고리의 다른 글
| StatefulWidget (0) | 2023.09.05 |
|---|---|
| dart classes (0) | 2023.09.04 |
| dart data type (0) | 2023.09.04 |
| dart 변수 (0) | 2023.09.04 |
최근댓글