들어가기 전
나는 Flutter 학습을 위해서 Dart에 대해서 먼저 배우고 있는 데, Dart를 배우면 배울수록 너무 Javascript와 Java를 섞어 놓은 거 같이 생겨서 신기하면서도 배우기 쉬워서 만족하고 있다.
Flutter의 함수도 Java와 Javascript를 합친 것과 같은 문법이다.
함수, Function
Dart에서의 함수는 다른 언어와 마찬가지로, 하나의 로직을 재실행 할 수 있도록 하는 것으로, 코드의 재사용성을 높여주는 역할을 한다.
함수 선언 방법
Dart에서의 함수를 선언 하는 방법은 Java의 Method를 선언하는 것과 같이 해당 함수의 반환 타입을 명시해줘야하며, 반환하는 값이 없을 경우 void도 사용이 가능하다.
void printName(Sring name){
print("Hello $name");
}
void main() {
printName("Pino");
}
위에 보이는 것과 같이 다른 언어와 다르지 않다. main 함수 밖에 함수를 선언 할 수 있으며, 함수는 반환형과 함수의 이름 그리고 파라미터를 받을 수 있다
String getName(String name) => "My name is $name";
void main() {
print(getName("pino");
}
특이한 점이 Javascript처럼 함수의 코드가 한 줄이면 위에서 보이는 것처럼 작성도 가능하다.
Named Parameters
Named Parameters는 Dart에서 지원하는 신기하면서도 편리한 기능이다. 선언한 함수를 호출할 때 Parameters를 순서대로 넣는 것이 아니랄 Key, Value 형식으로 대입하여 호출할 수 있는 기능이다.
String text(String name, int age) => "My name is $name and age is $age";
void main() {
print(text("pino", 23));
}
기존의 함수를 선언하고 호출하는 방법은 위와 같다 다른 언어와 다르지 않고 매우 일반적이다. 하지만 아래의 예시를 보면 순서대로 넣는 것이 아닌 key와 value를 한 쌍으로 대입하고 있는 데 이를 Named Parameters라고 한다.
String text({String name, int age}) => "My name is $name and age is $age";
void main() {
print(text(name : "pino", age : 23));
}
Named Parameters는 Null Safety로 인하여 사용자가 해당 함수를 호출 할 때 파라미터에 null이 들어올 때를 대비하여 두가지 옵션을 제공하는 데 하나는 Default Value인데, 함수를 선언할 떄 Default Value를 설정하여 null이 들어와도 문제가 없게 하는 것과 required를 설정하는 것이다.
// Default Value
String text(String name = "pino", int age = 0) => "My name is $name and age is $age";
void main() {
print(text("pino", 23));
}
// Required
String text(required String name,required int age) => "My name is $name and age is $age";
void main() {
print(text("pino", 23));
}
Optional Positional Parameters
Optional Positional Parameters는 함수를 호출할 때 원하는 매개변수를 파라미터로 넘기지 않아도 되도록 설정하는 것이며 아래와 같이 간단하게 셋팅 할 수 있다.
String text(required String name,[int? age=23]) => "My name is $name and age is $age";
void main() {
print(text("pino"));
}
'F.E > Dart, Flutter' 카테고리의 다른 글
[Dart] Dart의 자료형에 대해 알아보자 (0) | 2023.01.08 |
---|---|
[Dart] 변수에 대해서 알아보자 (0) | 2023.01.08 |