Dart 03

rO_Or·2024년 3월 9일

Dart 그리고 Flutter

목록 보기
3/19

함수

void sayHello(String name) {
	print("Hello $name");
}
String sayHello2(String name) {
	return "hello $name";
}
String sayHello3(String name) => "Hello, $name";
void main() {
	sayHello('name');
}
  1. 반환 값의 타입을 적고, 파라미터 타입을 작성하면 된다.
  2. 한 줄일 경우, =>로 표현할 수 있다.

네임 파라미터

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'));
}
  1. JS처럼, 파라미터에 (num age = 17)를 작성해서 기본 값을 지정해 줄 수 있다.
  2. required를 작성하면, 반드시 필요하다는 뜻으로 함수 실행 시 해당 변수를 입력하지 않으면 에러가 발생한다.

옵셔널 포지션 파라미터

String sayHello(String name, int age, [String? country = 'none']) => 'Hello, $name and $age, $country';

void main() {
	sayHello('name', 17);
}
  1. 포지션에는 모든 파라미터를 입력해야 하는데, 일부만 옵셔널로 할 수 있다.

QQ 오퍼레이터

String toUpper(String? name) => name != null ? name.toUpperCase() : 'NONE';

String toUpper2(String? name) => name?.toUpperCase() ?? 'NONE';

void main() {
	toUpper('name'); // NAME
    toUpper2(null); // NONE
    
    String? name;
    name ??= 'name';
    name ??= 'name2'; // name
}
  1. 자바스크립트의 널리쉬 ??와 비슷한 개념인 것 같다.
  2. 왼쪽의 값이 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]));
}
  1. 타입스크립트에서의 interfacetype과 비슷한 개념인 것 같다.
profile
즐거워지고 싶다.

0개의 댓글