다트는 기본적으로 object-oriented language 로 python 과 유사한 점이 매우 많다.
python 과 마찬가지로 function 도 function type 의 object 이다.
다음과 같이 함수 역할을 하는 클래스를 만들 수도 있다.
class WannabeFunction {
String call(String a, String b, String c) => '$a $b $c!';
}
var wf = WannabeFunction();
var out = wf('Hi', 'there,', 'gang');
void main() => print(out);
python 에서는 __call__ 을 정의하면 위와 똑같이 만들 수 있다.
함수 정의
함수를 정의하는 방법은 c 언어와 매우 유사하다.
반환자료형 함수이름(매개변수자료형 매개변수이름) {
// do somthing
return ...
}
함수가 하나의 구문만 가지는 경우 짧게 줄여서 쓸 수 있다.
=> 뒤에 리턴할 값을 놓기만 하면 된다.
반환자료형 함수이름(매개변수자료형 매개변수이름) => somethine to return;
매개변수
positional, name, optional parameter 가 존재한다.
이들의 사용성은 엄격하게 구분되어있다.
positional 은 말그대로 매개변수 위치에 따라 값을 받는 방식이다.
디폴트 값 지정을 할 수 없고 named 처럼 값을 보낼 수도 없다.
named 는 변수 명을 지정해서 넘겨주는 방식이다.
디폴트 값을 지정할 수 있다.
값은 변수명: 값 으로 넘겨 주고
named 파라미터 종류는 {} 안에서 정의할 수 있다.
하지만 디폴트를 지정하지 않는 경우 nullable 로 지정해줘야한다.
타입 뒤에 ? 를 붙이면 된다.
nullable 이라는 개념이 아직 익숙하지 않지만 python 에서 optional 파라미터 뒤에 = None 을 일일히 붙이는 것보다 가독성도 좋고 편한것 같다.
optional 은 [] 안에 정의하면 된다.
마찬가지로 디폴트 값을 지정하지 않는 경우 nullable 을 명시한다.
사용방법은 positional 과 같다.
'지식 > Flutter' 카테고리의 다른 글
Dart 반복문 (0) | 2023.01.23 |
---|---|
Dart 조건 분기 (0) | 2023.01.23 |
Dart Final 과 Const (0) | 2023.01.21 |
Dart 자료형 (1) | 2023.01.21 |
Dart 설치 (0) | 2023.01.21 |
댓글