Post

[Dart] 3.Functions

dart

Dart의 Functions(함수)

Function

1
2
3
void sayHello(String name) {
  print("Hello $name nice to meet you!");
}
  • void: 이 함수는 아무것도 반환하지 않는다. 부가적인 효과만 존재한다. 반환하면 에러가 발생한다.
1
2
3
String sayHello(String potato) {
  return "Hello $potato nice to meet you!";
}
  • sayHello는 함수 이름이다.
  • potato, name은 파라미터 이름이다.
  • 함수 가장 앞쪽의 void, String 등은 함수의 반환형이다.

fat arrow syntax

  • 곧바로 리턴하는 간결한 문법이다.
1
2
String sayHello(String potato) => "Hello $potato nice to meet you!";
num plus(num a, num b) => a + b;

named argument

  • 파라미터가 여러 개일 때 유용하다.
1
2
3
4
5
6
7
8
9
10
11
String sayHello({String name, int age, String country}){
	return "Hello $name, you are $age, and you come from $country.";
}
void main(){
	print(sayHello(
    	age: 12,
        country: 'cuba',
        name: 'nico',   //노마드코더 맞음....
    ));

}
  • 함수를 선언할 때 파라미터에 중괄호를 사용한다.

null safety를 위한 방법

  1. 기본값 설정

    1
    2
    3
    4
    5
    6
    7
    
    String sayHello({
    String name = 'anon',
    int age = 19,
    String country = 'wakanda',
    }){
    return "Hello $name, you are $age, and you come from $country.";
    }
    
  2. required modifier 사용

    1
    2
    3
    4
    5
    6
    7
    
    String sayHello({
    required String name,
    required int age,
    required String country,
    }){
    return "Hello $name, you are $age, and you come from $country.";
    }
    

Optional Positional Parameters

  • 순서에 맞춰서 입력하는 파라미터이다.
  • Optional: 일부 파라미터는 입력하지 않을 수도 있다.
1
2
3
4
5
6
7
8
String sayHello(String name, int age,
[String? country = 'cuba']) =>
'Hello $name, you are $age, and you come from $country.';

void main(){
	var result = sayHello('nico', 12);
    print(result);
}
  • 함수 선언 시 []를 사용하고, 파라미터 자료형에 ?를 붙여 null일 수도 있음을 알린다.
  • 초기값 설정으로 null safety를 해결한다.
  • 자주 쓰지는 않는다.

QQ Operator

  • ??: 왼쪽이 null이면 오른쪽을 반환하고, 아니면 왼쪽을 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
String capitalize name(String? name) {
	if (name != null) {
    	return name.toUpperCase();
    }
    return 'ANON';
}

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

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

??=: 연산자 왼쪽의 값이 null이면 오른쪽을 할당한다.

1
2
3
4
void main(){
  String? name;
  name ??= 'apple';  // name이 null이면 'apple' 할당
}
  • QQ operator는 Flutter에서 많이 사용된다.

Typedef

  • 자료형이 헷갈릴 때 도움이 되는 alias를 만드는 방법이다.
  • 자료형 약칭을 만든다.
1
2
3
4
5
typedef UserInfo = Map<String, String>;

String sayHi(UserInfo userInfo){
	return "Hi ${userInfo['name']}";
}
This post is licensed under CC BY 4.0 by the author.