Dart 함수 (function) 알아보기 본문
반응형
04. dart function
01. 함수 작성법
- 아래 sayHello를 예로 든다면,
- void : return 타입. 아무것도 반환하지 않으므로 void 형
- sayHello : 함수의 이름
- String name : 매개변수로 String 타입의 변수 name 사용
void sayHello(String name) {
print("Hello $name");
}
// String : 함수의 반환값이 String 형태
// => : 즉시 return 시 fat arrow 사용하여 표현 가능 (return 문 한줄일 때 괄호와 return 키워드가 => 변환)
String directReturn(String name) => "Hello $name";
02. 파라미터
- positional arguments : 함수 호출시 정해진 순서로 파라미터를 넣어서 호출 해야함
String positional(String name, int age, String country) {
return "Hello $name, you are $age, you come from $country";
}
void main() {
print(positional("tom", 12, "USA")); // Hello tom, you are 12, you come from USA
}
- 그러나 인자가 많아질수록 매개변수 자리가 헷갈리고 무엇을 의미하는지 모호해지게 된다.
- named arguments : 파라미터 순서를 기억하는 대신 항목을 지정 해서 호출
- {} 로 파라미터 부분을 감싸준다.
- null safety 처리를 해줘야 하는데 3가지 방법이 있다.
// 디폴트 값 지정
String named01(
{String name = 'nick', int? age = 12, String country = 'KOREA'}) {
return "Hello $name, you are $age, you come from $country";
}
// required 필드로 만들기
String named02(
{required String name, required int age, required String country}) {
return "Hello $name, you are $age, you come from $country";
}
// null이 할당될 수 있게 하기
String named03({String? name, int? age, String? country}) {
return "Hello $name, you are $age, you come from $country";
}
- 호출부분
print(named01(
age: 12,
name: "mary",
country: "UK",
)); // Hello mary, you are 12, you come from UK
03. optional positional arguments
- 매개변수를 []로 감싸서 옵셔널로 지정할 수 있고, default값도 줄 수 있다.
- [] 내부의 변수들은 optional arguments 이다.
String OptionalPositional(
String name,
int age, [
String? country = 'KOREA',
]) {
return "Hello $name, you are $age, you come from $country";
}
void main() {
print(OptionalPositional(
"brown", 12)); // Hello brown, you are 12, you come from KOREA
}
04. QQ Operator
- 다음과 같은 함수가 있다.
- null safety 때문에 기본적으로 name에는 null이 할당될 수 없다.
String capitalizeName(String name) => name.toUpperCase();
- 만약 name 값에 null이 허용될 수 있도록 하려면 어떻게 해야할까?
- QQ Operator를 사용하면 가능하다.
String capitalizeName(String? name) => name?.toUpperCase() ?? 'name is null';
- ??(QQ) 란 left ?? right 일때, left가 null이면 right값, 아니면 left 값을 사용하겠다 라는 의미이다.
05. QQ equals
- ??= 좌항이 null일경우 우항에 있는 값을 할당
String? canBeNull;
canBeNull ??= "defaultName";
06. typedef
- 긴 타입이거나 여러번 나오는 타입의 이름을 정해서 사용할 수 있다.
- 정의한 타입이 그대로 대입된다고 간주
typedef mytype = List<int>; // 타입정의
mytype reversedList(mytype list) {
var reversed = list.reversed;
return reversed.toList();
}
반응형
'Dart' 카테고리의 다른 글
Dart class - named constructor (0) | 2023.04.28 |
---|---|
Dart class - basic (0) | 2023.04.28 |
Dart 자료형 (Data Type) (0) | 2023.04.28 |
Dart 변수 알아보기 ( variables ) (0) | 2023.04.28 |
Dart 시작하기 - Hello World (0) | 2023.04.28 |
Comments