Flutter & Dart

Dart Function

까칠코더 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
반응형