SSONG Cloud

Dart 기본 - Function 본문

프로그래밍/Flutter

Dart 기본 - Function

SSONGMI 2023. 1. 8. 13:17
반응형

1. Reference

https://nomadcoders.co/dart-for-beginners/lobby

 

Dart 시작하기 – 노마드 코더 Nomad Coders

Flutter 앱 개발을 위한 Dart 배우기

nomadcoders.co

 

2. Function

1) Declaration

- 일반 함수 방식

void printName(name) {
	print(name);
}

- arrow function

void printName(name) => print(name);

 

2) Parameter

- Positional Parameter

: parameter의 순서에 따라 대입됨

void printNameAndAge(String? name, int? age) {
	print('name = $name, age = $age');
}

void main() {
	// name에는 myName, age에는 27이 대입됨
	printNameAndAge('myName', 27); // name = myName, age = 27
}

 

- Named Parameter

: parameter의 이름을 지정하여 대입할 수 있음

: 중괄호 사용

void printNameAndAge({String? name, int? age}) {
  print('name = $name, age = $age');
}

void main() {
  printNameAndAge(name: 'myName', age: 27); // name = myName, age = 27
}

 

- Default Value

: parameter의 기본값을 지정할 수 있음

void printNameAndAge({String? name, int age = 17}) {
  print('name = $name, age = $age');
}

void main() {
  printNameAndAge(name: 'myName'); // name = myName, age = 17
}

 

- Optional Positional Parameter

: 특정 parameter를 넣지 않을 수 있도록 함

: 대괄호 사용

void printNameAndAge(String name, [int? age]) {
  print('name = $name, age = $age');
}

void main() {
  printNameAndAge('myName'); // name = myName, age = null
}

 

- Required

: parameter를 필수조건으로 만들 수 있음

: required로 선언 후 매개변수로 넣어주지 않으면 함수 호출부에서 에러 발생

void printNameAndAge({required String name, required int age}) {
  print('name = $name, age = $age');
}

void main() {
  printNameAndAge(name: 'myName', age: 27); // name = myName, age = 27
}

 

3) operator

- QQ Operator(??)

: ??의 왼쪽 값이 null이라면 오른쪽 값을 return

String upperWord(String word) => word.toUpperCase();
void main() {
  print(upperWord('hello'));
  print(upperWord(null)); // Error
}

* 변환1

String upperWord(String? word) => word == null ? "NULL" : word.toUpperCase();
void main() {
  print(upperWord('hello')); // HELLO
  print(upperWord(null)); // NONE
}

* 변환2 (QQ Operator 사용)

String upperWord(String? word) => word?.toUpperCase() ?? "NULL";
void main() {
  print(upperWord('hello')); // HELLO
  print(upperWord(null)); // NULL
}

 

- QQ Assignment Operator(??=)

: 대입의 대상이 null인 경우 할당

void main() {
  String? name;
  name ??= 'myName';
  name ??= 'changedName'; // Warning - 왼쪽 값이 항상 null이 아니기 때문에 changedName이 name에 대입될 수 없음
  print(name); // myName
}

 

4) typedef

: 자료형에 alias 설정 가능

List<int> makeList(List<int> list) => list;

* 변환 후

ListofInt makeList(ListofInt list) => list;
반응형

'프로그래밍 > Flutter' 카테고리의 다른 글

Dart 기본 - Class  (0) 2023.01.08
Dart 기본 - Data Type  (0) 2023.01.08
Dart 기본 - Variables  (0) 2023.01.08
Comments