Flutter

[Dart] function

냠냠쿠 2024. 6. 12. 13:17
728x90

 

1. fat arrow syntax 

String sayHello(String name){
  return "hello $name";
}

void main() {
  print(sayHello('홍길동'));
}

 

위 코드를 아래와 같이 고칠 수 있다.

String sayHello(String name) =>  "hello $name";


void main() {
  print(sayHello('홍길동'));
}

 

 

 

2. named argument를 이용한 Parameters

- 순서 다르게 parameters를 지정하더라도 name이 중요하기 때문에 상관없다.

//safety null 이 적용 되어 있기 때문에
//default value를 지정 해 준다.
String sayHello({
  String name = '김길동',
  int age = 0,
}) {
  return "hello $name, you are $age";
}

void main() {
  print(sayHello(
    name: '홍길동',
    age: 10,
  ));
}

- 사용자가 일반 함수를 호출하면 default value 로 출력하게 된다.
 만약 default value가 없기를 바란다면, required를 붙여준다.

//safety null 이 적용 되어 있기 때문에
//default value를 지정 해 준다.
String sayHello({
  required String name ,
  required int age ,
}) {
  return "hello $name, you are $age";
}

 

 

3. Parameter에 Optional 설정 하기

//age를 보내지 않아도 된다.
String sayHello(String name, [int? age = 20]) {
  return "hello $name, you are $age";
}

void main() {
  print(sayHello(
    '홍길동'
  ));
}

 

4. QQ Operator

String capitalizeName(String? name) {
  if(name != null){
    return name.toUpperCase();    
  }
  return 'test';
}

void main() {
  capitalizeName('홍길동');
  capitalizeName(null);
}

위 코드를 아래와 같이 수정 가능

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

void main() {
  capitalizeName('홍길동');
  capitalizeName(null);
}

이 코드를 QQ Operator를 통해 더 짧게 수정 가능

String capitalizeName(String? name) =>  name?.toUpperCase() ?? 'test';
//name이 null이 아니면 왼쪽 값 출력
//name이 null이면 오른쪽 값 출력 

void main() {
  capitalizeName('홍길동');
  capitalizeName(null);
}

 

 

 

4. QQ equals (QQ assignment Operator)

void main() {
  String? name;
  name ??= '홍길동'; // name이 null이라면 홍길동을 name에 넣는다.
  //이미 여기서 name은 null이 될 수 없기 때문에 name을 출력하면 홍길동만 나온다.
  
  name ??= '누군가'; // name이 null이라면 누군가를 넣는다.
  print(name);
}

 

 

5. typedef 

- 자료형에 alias를 붙일 수 있게 해 준다.

typedef ListOfInts = List<int>;

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

void main() {
  print(reverseListOfNumbers([1,2,3])); //[3, 2, 1]
}

 

typedef UserInfo = Map<String, String>;

String sayHi(UserInfo userInfo){
  return "hi ${userInfo['name']}";
}

void main() {
  print(sayHi({"name":'홍길동'}));
}

 

728x90