본문 바로가기

Flutter/Dart

Dart Functions 함수

반응형

#  Defining a Function

   리턴할데이터타입  함수이름(인자데이터타입   인자이름){}

   void sayHello(String name) {                          //  void 함수 아무것도  return 하지 않는다.

     print ("Hello $name nice to meet you");

   }

   String sayHello(String name) {                       //  String을 return 하는 함수

     return "Hello $name nice to meet you";

   }

   String sayHello(String name) =>"Hello $name nice to meet you";     

    // 코드가 한 줄짜리 일 때 fat arrow syntax를 이용

    // fat arrow syntax => 는 곧바로 return 한다라는 의미

 

 

#  Named Parameters

   1)  Named Parameters 안 쓴 버전 - positional parameter 자리를 알아야함

   String  sayHello(String name, int age, String  country){

     return "Hello $name, you are $age, and you come from $country";

   }

   void main() {

     print(sayHello('potato',12,'cuba'));               //  인자가 무엇을 뜻하는지 모르기 때문에 좋은 방법이 아님

   }

  2)  Named Parameters 쓴 버전

   String sayHello({String name, int age, String  country}){ // Named argument를 사용한다고 함수에게 말하는 방법 :중괄호

     return "Hello $name, you are $age, and you come from $country";

   }

   void main() {

     print(sayHello(                                             //  순서 상관없이 가능

       age:12,

       country: 'cuba',

       name : '공부중'

     ));              

   }

   3) 발생하는 문제 : null error 유저가 null 값을 보낼 경우

     < null  safety >

     1. 함수 인자에 null이아닌 기본값 설정해주기 => 인자없이 함수 호출 가능

        {String name =  'anon', int age = 99, String  country = 'wakanda', }

     2. required modifier 사용해서 필수값으로 만들기 - required를 쓰면 값이 반드시 있어야한다.

        {required String name, required int age, required String  country} 

 

 

#  Optional Positional Parameters - positional parameters는 순서에 맞춰서 인자를 입력, all required 임

   인자 중 일부는 required 하지 않게 하기- 대괄호를 씌어주고 ?로 null 값이 될 수 있음을 표시하고 기본값

   String  sayHello(String name, int age, [String?  country= 'cuba'])=> "Hello $name, you are $age, and you come from $country";

   }

   void main() {

     print(sayHello('potato',12));      

   }

 

 

#  QQ Operator

1) left ?? right    // left가 null이면 right null이 아니면 left

대문자로 변환 함수

   1. String capitalizeName(String? name){

   if(name!=null){ return name.toUpperCase(); }

   return 'ANON';

   }

   void main(){

   capitalizeName('nico');

   capitalizeName(null);

   }

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

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

2) ??=

void main(){

Stirng? name;

name ??= 'nico';  //name이 null이면 'nico' 값을 할당

}

 

 

#  Typedef  - 자료형에 alias를 붙일 수 있게 해줌, 자료형 이름의 별명을 만들 때 사용

   리스트 숫자 순서를 반대로 뒤집는 함수

   typedef  ListOfInts = List<int>; 

   ListOfInts reverseListOfNumbers(ListOfInts list){

      var reversed = list.reversed;

      return reversed.toList();    //리스트를 뒤집으면 리스트와는 조금 다른 iterable이 돼서 toList()를 해줘야함

   }

 

반응형

'Flutter > Dart' 카테고리의 다른 글

Dart Map - entries, asMap  (0) 2023.02.10
Dart List - forEach, map, reduce, fold  (0) 2023.02.10
Dart Class 클래스  (0) 2023.02.09
Dart - Data Type 데이터 타입  (0) 2023.02.07
Dart Variables - 변수  (0) 2023.02.06