[Dart] Functions

gigilee·2024년 5월 20일
0

Flutter 입문

목록 보기
4/10
post-thumbnail

Defining a Function

void는 반환 값이 없다는 것을 의미한다. 따라서 함수 내에서 반환 값이 있을 경우 알맞은 자료형을 함수명 앞에 명시해야 한다. 코드 시작과 동시에 바로 return 을 때려버리는 함수의 경우 fat arrow syntax를 사용하여 간략하게 작성할 수 있다.

// 반환 값이 없는 함수
void sayHello(String name) {
	print("Hello $name nice to meet you!");
}

// 반환 값이 있는 함수
String sayHello(String name) {
	return "Hello $name nice to meet you!";
}

// fat arrow syntax
String sayHello(String name) => "Hello $name nice to meet you!";

Named Parameters

함수 호출 시 파라미터의 순서를 헷갈릴 수도 있고, 파라미터가 내포한 의미를 쉽게 파악하지 못할 수도 있다. 그러한 함수의 직관성을 높이기 위해 함수의 파라미터들을 중괄호({})로 감싸주어 Named argument로 만들 수 있다.

이제 파라미터의 순서에 관계 없이 함수를 호출할 수 있지만, 파라미터의 값을 모두 작성하지 않을 수도 있기 때문에 기본 값을 지정하거나, required modifier를 사용하여 미연에 오류를 방지할 수 있다.

  • 기본 값 지정
String sayHello({
  String name = 'gigi',
  int age = 99,
  String country = 'Korea',
}) {
  return "Hello $name, you are $age, and you come from $country";
}

void main() {
  // 기본 값을 지정하였을 경우 파라미터를 입력하지 않아도 된다.
  sayHello();
}
  • required modifier 사용
    • 필수 값을 지정하는 방법
    • 자료형 앞에 required를 작성하면 함수 호출 시 파라미터가 정상적으로 입력되지 않은 경우 Dart의 null safety 특성에 기반하여 빨갛게! 알려준다.
String sayHello({
  required String name,
  required int age,
  required String country,
}) {
  return "Hello $name, you are $age, and you come from $country";
}

void main() {
  // 함수에 정의된 파라미터의 순서와 상관 없이 값을 입력할 수 있다.
  sayHello(age: 99, country: 'Korea', name: 'gigi');
}

앞서 말했다시피 아래 코드는 파라미터를 정상적으로 입력하지 않은 경우이다.

Optional Positional Parameters

파라미터의 필수 값 여부를 선택적으로 지정하고 싶다면 필수 요소에 포함하고 싶지 않은 특정 파라미터를 대괄호([])로 감싸고 기본 값을 할당하면 된다. 이와 같이 코드를 작성할 경우 대괄호로 감싼 파라미터의 값이 null일 경우 함수 정의 시 지정한 기본 값으로 할당된다.

String sayHello(String name, int age, [String? country = 'Korea']) =>
    "Hello $name, you are $age years old from $country";
    
void main() {
  sayHello('gigi', 99);
}

QQ Operator

QQ Operator에는 ??, ??=이 있다.

??좌항이 null이면 우항을 반환한다.

??=좌항이 null이면 우항의 값을 할당한다.

Typedef

자료형에 원하는 alias(별명)를 만들 때 사용할 수 있다.

typedef ListOfInts = List<int>;
  
ListOfInts reverseListOfNumbers(ListOfInts list) {
  var reversed = list.reversed;
  return reversed.toList();
}
  
void main() {
  reverseListOfNumbers([1, 2, 3, 4]);
}
profile
Hello, World!

0개의 댓글

관련 채용 정보