개발/Dart

개발/Dart

Object dynamic var 차이

Object 모든 타입의 공통 부모이다. 다른 타입을 대입 할 수 있다. void main() { Object obj = 10; print(obj.runtimeType); obj = '이십'; print(obj.runtimeType); obj = TestObj(); print(obj.toString()); } class TestObj { @override String toString() { return 'obj'; } } // 출력 결과 // int // String // obj dynamic 컴파일 시간에 오류를 잡아내는 static checking을 하지 않는다. 컴파일 시간에 오류를 잡아내지 않으므로 어떤 값이 들어오는지 정확히 알 때만 사용해야 한다. void main() { dynamic v =..

개발/Dart

Built-in Type

먼저 dart에서 모든 타입의 기본값은 null이다. 기본값은 초기화를 따로 하지 않아도 대입되어 있는 값을 의미한다. 숫자 타입이여도 기본값이 null인데 그 이유로는 다트의 모든 타입은 object이기 때문에 null이 기본값으로 초기화된다. (물론 null-safety가 활성화되어있다면 타입에 ?를 붙여야 에러 없이 null로 초기화) Number 위에서 먼저 말했던대로 숫자 타입도 기본적으로 Object로부터 파생된다. 그 다음에 특이하게 바로 int와 double이 아닌 num이란 타입이 있다. 이는 int와 double 모두 될 수 있는 숫자형 타입이다. 이미지 출처 : https://dart.dev/guides/language/numbers num 일반적인 산술연산자와 절댓값을 구해주는 ab..

개발/Dart

dot(.) 개수에 따른 의미 (2개와 3개)

1개는 알고있는 상태이기에 그 외의 개수에 의문이 든 것이라 생각하고 작성하지 않는다. 간혹 list를 다루는 글들을 보다보면 점이 2개, 3개 붙어있는 요상한 친구들이 보이는데 의미를 몰라 코드 해석을 정확히 할 수 없었다. 이에 대해 찾아보고 정리했다. 2개 (cascade notation) 생성한 object 자신의 멤버를 이어서 호출할 수 있도록 해준다. 출력 결과를 보면 알겠지만 paint1과 paint2는 같은 의미로 작성된다. 위 예제에선 없지만 멤버 함수도 호출된다. 하지만 알아둬야 할 것은 마지막에 호출한 멤버 함수의 return을 받거나 중간에 호출한 멤버 함수의 return을 받아 중간에 사용하는 것이 아니다. 제대로 이해 못하고 아래 예시 코드를 짜니 문제가 발생했다. 출력하면 에러..

개발/Dart

factory 키워드 (싱글턴 패턴)

class의 인스턴스를 새로 만들지 않도록 도와주는 키워드이다.(보통 싱글턴을 구현할 때 사용한다.) 싱글턴 패턴이란 class의 인스턴스를 하나만 생성하고 이를 재사용하도록 하는 디자인 패턴이다. factory 키워드가 쓰인 생성자는 무조건 자기 자신 타입의 인스턴스를 반환해야 한다. 예시 class TestFactory { static final TestFactory _factoryInstance = TestFactory._internal(); ​ factory TestFactory() { return _factoryInstance; } ​ TestFactory._internal() { print('call'); } } ​ main() { var testFactory1 = TestFactory(); ..

leebera_
'개발/Dart' 카테고리의 글 목록