Flutter를 위한 Dart 기초 - 2️⃣ 데이터 타입과 함수

sxxng_ju·2023년 1월 25일
0

Flutter

목록 보기
1/5

Dart Data Types

기본 자료형

Dart의 자료형에는 String, bool, int, double 등이 있습니다. 만약 int나 double을 둘 다 사용할 수 있다면 num을 사용하면 됩니다.

List

list를 만드는 방법은 두 가지입니다. var 키워드를 사용하는 것과 타입을 지정하여 List 키워드를 사용하는 것입니다.
Dart의 List에는 collection if라는 것이 있습니다. 배열의 요소가 if 조건에 따라 값을 추가할지 말지 결정하는 것입니다.

void main() {
	var numbers = [1,2,3,4];
    List<int> numbers2 = [
    1,
    2,
    3,
    4,
    if (true) 5,
    ];
}

String Interpolation

문자열 중에 변수를 사용하고 싶다면 달러기호($)만 추가해주면 사용할 수 있습니다. 수식이 필요하다면 중괄호({})로 감싸고 계산식을 적어주면 됩니다. 만약 특수기호를 사용해야 한다면 역슬래시 기호()를 통해 표현할 수도 있습니다.

void main() {
	var name = "sj";
    var age = 26;
    var greeting = 'Hello my name is $name, I\'m ${age + 2}'
    
}

Collection for

collection if와 같이 여러개의 데이터를 갖는 배열을 추가하고 싶을 때는 collection for을 사용할 수 있습니다.

void main() {
	var oldData = ['D','E']
    nar newData = [
    	'A',
        'B',
        'C',
        for(var data in oldData) "old Data $data"
    ]
}

Maps

Maps는 Javascript의 object와 비슷합니다.

void main() {
	var player = {
    	'name':'sj',
        'age':28,
    };r
    Map<int, bool> newPlayer = {
    	1: true,
        2: false,
        3: false,
    };
}

Sets

Sets은 모든 요소가 중복을 허용하지 않습니다. 즉 집합입니다.

void main() {
	var numbers = {1,2,3,4}
    Set<int> numbers2 = {1,2,3,4}
}

Dart Functions

Dart의 함수

함수가 무언가를 return 하지 않는다면 함수명 앞에 void를 붙입니다. 하지만 무언가를 return 한다면 함수의 타입을 정해주어야 합니다.

void sayHello(String name) {
	print("hello $name");
}

void main() {
	sayHello('sj')
}

Named Parameters

밑의 경우처럼 함수의 parameter로 여러 개를 보낼 때 순서가 헷갈릴 수 있습니다.

String sayHello(String name, int age, String country) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	sayHello('sj', 28, 'Korea')
}

named argument를 활용하면 순서와 관계없이 작성할 수 있습니다. 사용할 함수의 인자를 중괄호로 감싸고 전달해주는 인자를 명시해주면 됩니다. 이때 인자가 필요한만큼 전달이 안될 수도 있기 때문에 default 값을 설정해주거나 파라미터 타입 앞에 required를 추가하는 것입니다.

String sayHello({required String name, int age, String country,}) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	print(sayHello(
    	age: 28,
        name: 'sj',
        country: 'Korea'
    ));
}

Optional Positional Parameters

순서를 가지면서 인자를 필수로 포함하지않아도 된다면 다음과 같이 작성할 수 있습니다. Optional로 설정할 parameter를 대괄호로 감싸고 물음표를 붙여주고 default 값을 설정해주면 됩니다.

String sayHello(String name, int age, [String? country = '?']) {
	return "Hello $name, you are $age, and you come from $country";
}

void main() {
	sayHello('sj', 28)
}

QQ Operator

A ?? B; 는 A가 null일 경우 B, A의 값이 있을경우는 A를 return 합니다.

String capitalizeName(String? name) => name?.toUpperCase() ?? 'ANON';

void main() {
	capitalizeName('sj');
    capitalizeName(null);
}

Typedef

typedef 키워드를 통해 타입을 정의할 수 있습니다.

typedef myType = List<int>

출처

노마드코더 Dart 강의
Dart 공식문서
Flutter 공식문서

0개의 댓글