반응형
사용 툴 - DartPad
DartPad
dartpad.dev
DartPad 정보 : Based on Flutter 3.3.10 Dart SDK 2.18.6
덧셈, 뺄샘을 출력하는 일반적인 함수 사용법 코드 입니다.
void main() {
add(5, 3);
sub(5, 3);
}
void add(int x, int y) {
print("add : ${x + y}");
// >> add : 8
}
void sub(int x, int y) {
print("sub : ${x - y}");
// >> sub : 2
}
위 add와 sub와 같은 형식으로 CallFunc 함수를 typedef 했습니다.
typedef로 정의한 함수를 변수 처럼 할당을 할 수 있습니다.
아래 코드에 cal 변수에 add 함수명을 할당하면 cal함수는 add와 같이 동작을 하고 cal 변수에 sub 함수명을 할당하면 cal함수는 sub와 갗이 동작을 합니다. print 출력 결과로 알수 있습니다.
typedef CalFunc(int x, int y);
void main() {
CalFunc cal = add;
cal(5, 3);
// >> add : 8
cal = sub;
cal(5, 3);
// >> sub : 2
}
void add(int x, int y) {
print("add : ${x + y}");
}
void sub(int x, int y) {
print("sub : ${x - y}");
}
아래 코드는 새로운 함수 defFunc함수 파라미터에 typedef로 정의한 CalFunc를 사용한 경우입니다.
defFunc를 사용할때 파라미터로 add와 sub와 같은 같은 형식인 함수명을 입력하면 해당 함수명과 같은 동작을 합니다.
typedef CalFunc(int x, int y);
void main() {
defFunc(5, 3, add);
// >> add : 8
defFunc(5, 3, sub);
// >> sub : 2
}
void add(int x, int y) {
print("add : ${x + y}");
}
void sub(int x, int y) {
print("sub : ${x - y}");
}
void defFunc(int x, int y, CalFunc cal) {
cal(x, y);
}
아래 코드는 위 설명한 방식과 같은 typedef 사용법이지만 class를 사용한 경우입니다.
로그 클래스에 출력할 로그 형식을 원하는 형식으로 유기적으로 바꿀때 사용 가능한 샘플 코드입니다.
typedef HelloLoggerOutFunc = void Function(String msg);
class HelloLogger {
HelloLoggerOutFunc out = timeHelloLoggerOutFunc;
HelloLogger() {
out = print;
}
void log(String msg) {
out(msg);
}
}
void timeHelloLoggerOutFunc(String msg) {
String timeStamp = DateTime.now().toString();
print('${timeStamp}: $msg');
}
void workHelloLoggerFunc(String msg) {
print('[deub]: $msg');
}
void main() {
HelloLogger l = HelloLogger();
l.log('Hello World');
l.out = timeHelloLoggerOutFunc;
l.log('Hello World');
l.log('Hello World');
l.out = workHelloLoggerFunc;
l.log('Hello World');
l.log('Hello World');
}
반응형
'프로그램 개발해서 돈벌기 > flutter' 카테고리의 다른 글
flutter material button - The method 'FlatButton' isn't defined (0) | 2022.12.30 |
---|---|
flutter upgrade와 zsh: command not found: flutter (0) | 2022.12.30 |
8. 함수(function) 만드는 과정 - 완전 초보 Dart 언어 기초 문법 : flutter (0) | 2022.12.23 |
7. for, for / in, forEach, while, do / while - 완전 초보 Dart 언어 기초 문법 : flutter (0) | 2022.12.23 |
6. if, switch - 완전 초보 Dart 언어 기초 문법 : flutter (0) | 2022.12.23 |
댓글