함수 선언
void greeting(String name) {
print('Hello my name is $name!');
// 1
String greetingString(String name) {
return 'Hello my name is $name';
}
// 2
String greetingString(String name) => "Hello my name is $name";
}
void main() {
greeting('gwanson');
print(greetingString('gwanson'));
}리턴값이 없는 함수는 void 로 선언을 하고, 리턴값이 존재하는 함수는 해당하는 타입으로 선언합니다.(예: String,int )
named parameter
String greeting({
required String name,
int age = 99,
String? country,
}) {
return 'Hello $name, you are $age, and you come from $country';
}
void main() {
print(greeting(
age: 26,
name: 'gwanson',
));
}
// 출력
// Hello gwanson, you are 26, and you come from nullDart의 함수 파라미터는 named argument를 지원합니다.
named parameter를 선언하는 방법은 아주 간단합니다. 파라미터에 {} 를 씌워주는 것만으로 함수를 호출할 때 파라미터의 순서와 관계없이 호출할 수 있게 됩니다.
위의 greeting 함수는 총 3가지의 방법으로 파라미터를 선언한 것을 볼 수 있습니다.
requiredrequired는 해당 파라미터는 함수가 동작할 때 필수로 존재해야하는 것을 뜻하는 키워드입니다.- default value
int age를 보면 기본 값이 99로 선언되어 있습니다. 이는 사용자가 age에 아무런 값을 할당하지 않으면 기본적으로 99란 값이 들어가는 것을 의미합니다. null safety
파라미터 자료형에?를 붙여서 해당 값이 입력되지 않으면 null값으로 처리될 수 있게 해줍니다.
Optional Positional Parameters
함수의 Positional Parameter 는 순서에 맞춰서 입력해야합니다. named parameter를 사용하지 않는 함수의 파라미터에는 Optional Positional Parameter를 사용하여 처리할 수 있습니다.
String greeting(String name, int age, [String? country = 'korea']) => return 'Hello, my name is $name, I'm $age years old from $country';
void main() {
print(greeting('gwanson', 26));
}
// 출력
// Hello, my name is gwanson, I'm 26 years old from korea위의 코드처럼 main에서 greeting을 호출했을 때, country값을 넣지 않았음에도 korea가 출력되는 것을 볼 수 있습니다.
함수의 파라미터에 [] 를 감싸주고 ? 를 자료형에 붙여주면 옵셔널 파라미터가 됩니다.
QQ Operator
??
?? 오퍼레이터는 swift의 오퍼레이터와 유사한 역할을 합니다.
String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';
void main() {
capitalizeName('gwanson');
capitalizeName(null);
}
// 출력
// GWANSON
// ANONleft ?? right 라고 예시를 들었을 때, left가 true면 left의 값을 return하고, false면 right의 값을 return 합니다.
??=
??= 오퍼레이터는 해당 값이 null 이면 값을 할당해주는 오퍼레이터입니다.
String? name;
name ??= 'gwanson';
print(name);
// 출력
// gwansonTypedef
Dart의 Typedef는 swift의 typealias와 유사한 기능을 합니다.
어떠한 자료형의 이름을 직접 선언해줄 수 있습니다.
