개념,기능 정리

dart(4) functions

rhdaud2 2025. 2. 3. 20:54

* named parameters - required ,  Optional Positional Parameters, QQ operator (??), Typedef

 

 

void : 아무것도 return 하지 않는다

 

void sayHello(String name) {
  print('hello $name');
}

String sayHello2(String name) {
  return 'hello $name';
}
// String sayHello2(String name) => 'hello $name';
// sayHello2 함수와 위 주석은 동일 작동(fat arrow syntax)

//fat arrow syntax
num plus(num a, num b) => a + b;

void main() {
  print(sayHello2('name')); //hello name
  sayHello('name'); //hello name
}

 

.

.

.

 

named parameters

(flutter에서 자주 사용)

 

- 파라미터의 이름을 지정해주는 것

//nullable 처리 :
//1. 초기 값 설정 (ex. String name = 'name')
//2. 'required' modifier (required 키워드로 반드시 필요함을 선언)

//'required' modifier 
String sayHello({
  required String name,
  required int age,
  required String country,
}) {
  return 'hello $name, $age, $country';
}

void main() {
  print(sayHello(
    name: 'name',
    age: 21,
    country: 'korea',
  ));
}

 

 

.

.

.

 

 

Optional Positional Parameters

 

//Optional Positional Parameters(받지 않아도 되는 파라미터 추가하기)
//1. [] 로 감싸기
//2. ? 키워드 추가(null일 수 있음)
//3. 초기 값 선언

String sayHello(String name, int age,
        //Optional Positional Parameters
        [String? country = 'korea']) =>
    'hello $name, $age, $country';

void main() {
  var result = sayHello('name', 26); //hello name, 26, korea
  var result2 = sayHello('name2', 2); //hello name2, 2, korea
  print(result);
  print(result2);
}

 

 

 

 

.

.

.

 

QQ operator (??)

 

- js의 &&와 유사

- left ?? right  : left가 null일경우 right 출력

 

//이름을 대문자로 변경하는 함수
//?? : 좌항이 null 일 경우 우항 출력
String capitalizeName(String? name) =>
    name?.toUpperCase() ?? 'ANON';

void main() {
  capitalizeName('jonghoon');
  capitalizeName(null);
}

 

??=

void main() {
  String? name;
  // ??= : 좌측 값이 null이면 우측 값 출력
  name ??= 'jonghoon';
}

 

 

.

.

.

 

Typedef

 

자료형에 alias를 붙일 수 있게 해줌(ts의 타입 선언<type, interface와 유사>)

 

(기본 사용법)

typedef ListOfInts = List<int>;

//list를 뒤집는 함수
ListOfInts reverse(ListOfInts list) {
  var reversed = list.reversed;
  //list를 reversed할 경우 iterable이 됨
  //toList()로 다시 list로 변경
  return reversed.toList();
}

void main() {
  var reversedList = reverse([1, 2, 3]);
  print(reversedList); //[3, 2, 1]
}

 

 

** 구체화 된 데이터 타입을 지정하려면, class를 사용해야 함

'개념,기능 정리' 카테고리의 다른 글

dart(5) classes  (0) 2025.02.05
dart(3) Data Types  (0) 2025.02.03
dart(2) 설치, Variables  (0) 2025.02.03
dart(1) 배경  (0) 2025.02.03
타입스크립트 타입  (0) 2024.09.09