void getSomething () { doSomething } // Creating Function
getSomething(); // Calling the Function
Flutter의 기본적 함수는 위와같이 이루어져있습니다.
위와 같은 함수는 Named function이다. 즉 함수에 이름이 있다는 의미입니다.
아랫줄의 getSomething();은 함수를 불러온다는 의미를 가진 코드입니다,
Dart에는 Anonymous function이 있습니다.
버튼을 생성할때 (나중에 다룰 예정) 무조건 보게될 onPressed 함수를 예로들겠습니다.
onPressed: (){/dosomething}
'onPressed:' 는 void Callback 즉 콜백을 요구하는 함수인데 (Flutter에서 매우 자주 쓰이는 형태입니다.)
void callback은 anonymous function 즉 이름이 없는 함수를 요구하고있습니다.
void getCandy (int can) {
double cost = can * 1.5;
}
(int can) 은 Argument을 넣어주는 위치입니다. int는 말 그대로 정수형 데이터형식입니다.
argument란 전달인자로서 함수가 호출될 때 제공되는 값들을 말합니다. 이는 함수 정의의 한 부분으로 바뀌지 않는 매개변수(parameter)와 달리 호출될때마다 값이 바뀔 수 있습니다.
void main(){
hello('name');
}
void hello(String persontoHello){
print('Hello $persontoHello');
}
이 실행의 결과값은 Hello name이 되어집니다.
윗 main()함수에서는 hello 함수의 String값을 입력받습니다.
만일 이렇게 코드작성을 한다면 어떻게 될까요?
void main(){
hello('name');
}
void hello(String persontoHello = 'name'){
print('Hello $persontoHello');
}
당연히 실행이 안됩니다. persontoHello에는 이미 'name'값이 들어가있기 때문입니다.
여러개의 값을 입력하고싶다면 이런식으로 하면 됩니다.
void main(){
hello('name','hihi');
}
void hello(String persontoHello, String greet){
print('$persontoHello $greet');
}
이 방식 또는
void main(){
hello(persontoHello: 'name',greet: 'hihi');
}
void hello({String persontoHello, String greet}){
print('$persontoHello $greet');
}
이런식으로 입력할 수 있습니다.
hello함수에 {} 중괄호를 쓴 것을 볼 수 있는데, 이는 main함수에서 직접 원하는 값을 넣어줄 때 사용됩니다.
data : 'something' 으로 입력받는 경우 호출되는 함수 소괄호 속에 중괄호를 넣지 않으면 동작하지 않습니다.
void main(){
double result = myFunc();
print(result);
}
void myFunc(){
double pi = 3.14159;
pi * 2;
}
이런식으로 코드를 짜면 실행이 될까요?
당연히 안됩니다. double result = myFunc()에서는 double형태의 함수를 받아오길 원하고있고
아래 함수에는 return값이 없습니다.
실행을 시키려면
void main(){
double result = myFunc();
print(result);
}
double myFunc(){
double pi = 3.14159;
return pi * 2;
}
이런식으로 작성해야합니다.
int getA (int money){
return money - 1;
}
(int money) 이 부분은 입력해주는 부분, 함수 int는 출력 데이터타입, return은 출력을 표시해줍니다.
int change = getA(5);
이렇게 입력한다면 return 값은 4가됩니다.
다음에는 진짜로 어플리케이션을 만들어봅시다.
'Flutter' 카테고리의 다른 글
[Flutter News] Flutter Clock Challenge 의 승자는? (0) | 2020.02.28 |
---|---|
Flutter 정리 -4 기본적인 디자인의 이해 (0) | 2020.02.26 |
Flutter에서 "reference to an enclosing class method cannot be extracted"가 나타날 때 해결법 (0) | 2020.02.08 |
Flutter 정리 - 2 Flutter 문법에 대해 알아보기 - 변수 (0) | 2020.02.03 |
Flutter 정리 - 1 설치를 해봅시다. (0) | 2020.02.03 |