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
반응형