Dart Function

개발/Flutter & Dart 2023. 11. 16. 15:25
반응형

함수 선언은 반환타입 + 함수명 + 인자 형태로 구성됩니다.

void test(int value) {
  print('value = $value');
}

test(10); // value = 10

함수 인자 타입을 생략하는 경우에는 해당 인자의 타입을 dynamic 타입으로 사용하는 것을 의미합니다.

함수의 내용이 한줄로 처리 가능한 경우에는 =>를 사용합니다.

void test(int value) => print('value = $value');

함수의 인자를 사용할때 이름을 지정할 수 있으며, 중괄호 { 타입 이름 = 기본값, ... } 형식으로 사용합니다.

void test({String? str, bool? data = true}) {
  print('str = $str, data = $data');
}

test(str: 'aaaa', data: false); // str = aaaa, data = false
test(str: 'bbbb'); // str = bbbb, data = true

필수 인자값의 경우에 required 를 넣어줘야 합니다.

void test({required int value, bool? data}) {
  print('value = $value, data = $data ');
}

test(value: 100); // value = 100, data = null

 

함수를 대입할 수 있는 타입을 Function 이라고 합니다.

void test(int value) {
  print('value = $value');
}

Function func1 = test;
func1(10); // value = 10

Function은 다른 함수의 반환 타입이나 인자로도 사용가능합니다.

Function testFunc(Function arg) {
  arg();
  return otherFunc;
}

이름이 없는 함수도 사용가능하며, Java에서는 Lambda 또는 Swift에서는 Closure라고도 합니다.

(인자) {
  함수 구현
} 형태입니다.

const list = ['aaa', 'bbb', 'ccc'];
list.forEach((item) {
  print('${list.indexOf(item)}: $item');
});

// 0: aaa
// 1: bbb
// 2: ccc

get / set 함수를 통해서 데이터를 가져오거나 변경하도록 함수를 정의 함으로써 변수처럼 사용가능합니다.

class User {
  String _name= 'zzz';
  String get name {
    return _name.toUpperCase();
  }

  set name(value) {
    _name = value;
  }
  
  void printName() {
    print('name = $name'); 
  }
}

var user = User();
user.name = 'abc';
print('name = ${user.name}'); // ABC

User()
  ..name = 'ccc'
  ..printName(); // CCC
반응형

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

Dart 상위 위젯과 하위 위젯의 상태값 가져오기  (0) 2023.11.20
Dart 상속  (0) 2023.11.17
Dart Class 생성자  (0) 2023.11.17
Dart 예외처리 (try on finally)  (0) 2023.11.16
Dart Null safety  (0) 2023.11.16
Dart 컬렉션 타입 (List, Set, Map)  (0) 2023.11.16
Dart 변수 타입 (var, dynamic)  (0) 2023.11.16
Dart 상수 (const, final)  (0) 2023.11.16
Posted by 까칠코더
,