String hello(String name) {
return 'hello $name !';
}
void main() {
print(hello('name'));
}
다트에서는 타입 어노테이션을 변수 이전에 작성한다
함수에서는 return 에 대한 타입을 선언해줘야 한다
String hello(String name) => 'hello $name !';
fat arrow syntax 로 중괄호와 return 문을 생략하여 작성할 수 있다
flutter 에서 자주 사용된다
String hello(String name, int age) {
return 'hello $name, you are $age';
}
void main() {
print(hello('name', 33));
}
이런 식으로 작성한다면 함수 사용자가 인자에 대한 의미를 잊을 수 있다
String hello({ String name, int age }) {
return 'hello $name, you are $age';
}
void main() {
print(hello(age: 33, name: 'name'));
}
위와 같이 순서에 상관 없이 파라미터 이름과 값을 params: value 형식으로 넘겨줄 수 있다
매개변수 전체를 중괄호로 감싸고 전달하는 인자에는 name: value 형식으로 전달
자동완성 기능도 제공한다
이 때 매개변수의 기본 값을 적어주어 null safety 하도록 만들어준다
String hello({ String name = 'anyone', int age = 0 }) {
return 'hello $name, you are $age';
}
매개변수 선언 시 required 키워드로 선언하여
해당 매개변수가 꼭 있어야 함을 사용자에게 알린다
String hello({ required String name, required int age }) {
return 'hello $name, you are $age';
}
옵셔널한 매개변수 (not required) 를 지정해줄 수 있다
[자료형? 매개변수 = 기본값]
형식으로 사용
String hello(String name, [int? age = 0] }) {
return 'hello $name, you are $age';
}
void main() {
hello('name');
}
Question mark 를 두 개 사용해서 QQ 오퍼레이터
??
자바의 null 병합 연산자와 같음
??=
void main() {
String? name;
name ??= '기본값';
}
좌항의 변수가 null 이라면 우항의 값을 할당한다
type alias 를 만든다
리스트는 reversed 하면 iterble한 다른 무언가가 되어서
다시 list로 변환해줘야 한다
typedef ListOfInts = List<int>;
typedef UserInfo = Map<String, String>; // 이런 구조라면 클래스로 만들어야 한다