다트(플러터)

손현수·2023년 9월 9일
0

기본 문법

자료형

  • int
  • double
  • String
  • bool
  • num: int와 double은 num 타입에 포함된다.
    • 더 큰 자료형인 double형 변수에 int형 값을 대입하는 자동 형변환을 지원하지는 않지만 num 타입의 변수에는 int형과 double형 값을 모두 할당할 수 있다.
  • 다트는 타입 추론을 제공하기 때문에 var 키워드로 변수를 선언하는 것이 좋다.
  • final, const: 변수를 선언할 때 final 키워드를 사용하여 상수로 선언하는 것이 가능하다. 재할당 불가능
  • enum

산술 연산자

  • +, -, *, /: 사칙연산
  • ~/: 몫(int 타입 반환)
  • %: 나머지(int 타입 반환)
  • assert() 함수: 계산 결과가 참인지 검사한다.
    • assert(2 + 3 == 5); // true 반환

타입 검사

  • is: 같은 타입이면 true 반환
  • is!: 다른 타입이면 true 반환
int a = 10;

if (a is int) {
	print("정수");
}

형변환

  • as 키워드를 통해 형변환하는 것이 가능 (단, 다른 타입끼리의 형변환은 안 되고 상위 개념으로 변환하는 것만 가능. 즉, double -> int는 가능하지 않지만 int -> num은 가능)
var c = 30.5;

int d = c as int;	// double -> int 에러 발생

함수와 메서드

  • 클래스 밖에 작성하는 함수를 최상위 함수, 클래스 내부의 함수를 메서드라고 칭한다. 클래스 내부에 있는 함수도 static 키워드를 붙이면 최상위 함수와 같이 사용하는 것이 가능하다.
  • 최상위 함수는 어디에서나 호출할 수 있는 함수이며 함수라고 칭하는 대부분은 최상위 함수를 가리키는 것.
class MyClass {
	static bool isEven(int number) {
    	return number % 2 == 0;
    } // 클래스 내부 메서드를 static 키워드를 통해 최상위 함수처럼 사용
}

void main() {
	print(MyClass.isEven(10)); // static 메서드를 사용.
}

람다식

  • 다트에서는 람다 표현식을 지원한다. => 왼쪽에는 인수명을 작성하고, 오른쪽에는 동작할 코드 또는 반환값을 작성한다.
(number) => number % 2 == 0;

선택 매개변수

  • 함수 정의에서 {}로 감싼 매개변수는 선택적으로 사용하는 것이 가능하다. 호출할 때 매개변수명을 값 앞에 써주면 된다. 이런 매개변수를 이름 있는 매개변수라고도 부른다.
void something({String name, int age}) {}

void main() {
	something(name: '홍길동', age: 10);
    something(name: '홍길동');
    something(age: 10);
    something();
}
  • 만약 필수 매개변수와 선택 매개변수를 함께 사용하고 싶다면 앞쪽에 필수 매개변수를 먼저 둔다.
void something(String name, {int age}) {}

void main() {
	something('홍길동', age: 10); // ok
    something('홍길동'); //ok
    something(age: 10) // error. 필수 매개변수에 값이 전달되지 않음
    something(); // error. 위와 같은 이유
}
  • 선택 매개변수의 경우 기본값을 지정하는 것도 가능하다.
void something(String name, {int age = 10}) {}

void main() {
	something('홍길동', age: 10); // 홍길동, 10살
    something('홍길동'); // 홍길동, 10살
}

객체 지향 프로그래밍

클래스

class Person{
	String name;
    int age;
    
    void addOneYear() {
    	age++;
    }
}

var person = Person();
person.age = 10;
person.addOneYear();

접근 지정자

  • 변수명 앞에 _기호를 붙이지 않으면 접근 가능하고, 붙이면 접근 불가능
class Person{
	String name;
    int _age;
    
    void addOneYear() {
    	_age++;
    }
}

var person = Person();
person._age = 10; // 에러 발생
  • 위와 같이 _기호가 붙은 private 변수 또는 함수는 외부에서 접근이 불가능하다.
profile
안녕하세요.

0개의 댓글