본문 바로가기

프로그래밍 언어/Flutter

[Dart] 3. Function

반응형
참고 강좌

 

 

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

Flutter 앱 개발을 위한 Dart 배우기

nomadcoders.co

 


 

function 형식

returnType FunctionName (ParameterType Parameter){ }

  • returnType: 무슨 타입으로 리턴하는지
    • void: 아무것도 return 하지 않음
  • FunctionName: function의 이름
  • ParameterType: 전달 받는 파라미터의 타입과 해당 파라미러 이름

 

void sayHello(String name){ // return void => 아무것도 return 하지 않는다
  print("Hello $name nice to meet you!");
}

String sayHello2(String name){ // return String => String 값을 return
  return ("Hello $name nice to meet you!");
}

 

function 호출

  • FunctionName(Parameter);
void main() {
	sayHello('KyungMi');
	print(sayHello2('KyungMi'));
}

 

생략 가능 문

function이 실행되고 곧바로 return 할 경우 (return 한 줄짜리 function)

 

 1. return 생략 가능

 2. 중괄호 생량 가능 ( => 로 대체)

// 생략 전
num puls(num a, num b){
  return a+b;
}
// 생략 후
num puls2(num a, num b)=> a+b;

 

Positional Parameter

: function를 호출할 때 function 정의의 argument 순서와 똑같이 호출해야한다.

 

named Parameter

: argument 순서와 관계없이 argument 이름들과 value를 같이 적어 호출하면 된다.

 

💡 사용자가 파라미터를 부를때 정해진 순서를 알고 순서를 지켜서 호출해야하는 어려움 존재
     → 매우 불편, 이를 해결하기 위해 생성

 

function정의에서 할 일

 

  1. 파라미터 argument 에 중괄호 추가
  2. argument에 대한 null 값을 대비해 처리 필요
    • null 값 허용
      • default value 정의
      • String sayHello({ String name = 'anon', int age = 20, String country = 'korea' }) { }
    • null 값 허용하지 않음
      • required 사용
        (이 함수를 호출할 때 무조건적으로 이 파라미터 값을 넘겨줘야함)

 

호출할 때

 

print(sayHello(
    age: 23,
    name: "KyungMi",
    country: "Korea"
  ));

 

  • 좋은 점
    • 자동완성으로 argument 이름 쉽게 입력
    • type 교정

 

Optional Positional Parameters

Positional Parameters : 순서를 맞춰야 함

String sayHello(String name, int age, [String? country='korea']){
  return "Hello $name, you are $age, and you come from $country";
}

void main(){
  print(sayHello("KyungMi", 23));
}
  • name, age, country → 순서는 지켜야 함
  • country 값은 null을 허용 → null일 경우 ‘korea’

 

QQ Operator

: function에서 파라미터의 null을 허용하여 null 값이 넘어왔을 때 생기는 문제

  • toUpperCase함수는 type이 String이여야만 사용할 수 있는 함수

→ 이때 null 값이 들어왔을 때 nulllsafety 때문에 컴파일 에러 발생

이를 예방할 수 있게 도와주는 operator

 

  • 식 ? true : false
    • 식이 true 일 때 → true 실행
    • false 일 때 → false 실행
String capitalizeName(String? name) => 
  name != null ? name.toUpperCase() : "ANON";

 

  • true ?? false
    • 해당 값이 null이 아닐 때 → true 실행
    • null일 때 → false 실행
String capitalizeName2(String? name) => 
  name?.toUpperCase() ?? "ANON";

 

?? = → null 일 경우 대입

name ??= ‘nico’;

name이 null 일 경우 nico 대입

 

typedef

: 사용자가 만드는 데이터 type

  • 자료형의 alias를 붙일 수 있음
typedef ListOfInts = List<int>;

ListOfInts reverseListOfNumbers(ListOfInts list){
  var reversed = list.reversed;
  return reversed.toList();
}

 

→ 구조화된 데이터를 만들고 싶다면 class를 사용해야함

반응형

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

[Flutter] 1. flutter란?  (1) 2023.12.26
[Dart] 4. Class  (0) 2023.12.26
[Dart] 2. 데이터 타입  (0) 2023.12.26
[Dart] 1. Dart 해보기  (0) 2023.12.26
[Dart] 0. Dart 기본 지식  (1) 2023.12.21