함수
void sayHello(String name) {
print("Hello $name");
}
String sayHello2(String name) {
return "hello $name";
}
String sayHello3(String name) => "Hello, $name";
void main() {
sayHello('name');
}
- 반환 값의 타입을 적고, 파라미터 타입을 작성하면 된다.
- 한 줄일 경우,
=>로 표현할 수 있다.
네임 파라미터
String sayHello({String name = 'none', int age = 0, String country = 'none'}) {
return "Hello, $name and $age, $country;
}
String sayHello2({required String name, required int age, required String country}) {
return "Hello, $name and $age, $country;
}
void main() {
print(sayHello(age: 17, country: 'korea', name: 'name'));
}
- JS처럼, 파라미터에
(num age = 17)를 작성해서 기본 값을 지정해 줄 수 있다.
required를 작성하면, 반드시 필요하다는 뜻으로 함수 실행 시 해당 변수를 입력하지 않으면 에러가 발생한다.
옵셔널 포지션 파라미터
String sayHello(String name, int age, [String? country = 'none']) => 'Hello, $name and $age, $country';
void main() {
sayHello('name', 17);
}
- 포지션에는 모든 파라미터를 입력해야 하는데, 일부만 옵셔널로 할 수 있다.
QQ 오퍼레이터
String toUpper(String? name) => name != null ? name.toUpperCase() : 'NONE';
String toUpper2(String? name) => name?.toUpperCase() ?? 'NONE';
void main() {
toUpper('name');
toUpper2(null);
String? name;
name ??= 'name';
name ??= 'name2';
}
- 자바스크립트의
널리쉬 ??와 비슷한 개념인 것 같다.
- 왼쪽의 값이 null이 아니라면 왼쪽 값을, null이라면 오른쪽 값을 반환한다.
typedef
typedef ListOfInts = List<int>;
ListOfInts reverseListNum(ListOfInts list) {
var reversed = list.reversed;
return reversed.toList();
}
void main() {
print(reversedListNum([1,2,3]));
}
- 타입스크립트에서의
interface나 type과 비슷한 개념인 것 같다.