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에서 모든 타입의 기본값은 null이다. 기본값은 초기화를 따로 하지 않아도 대입되어 있는 값을 의미한다. 숫자 타입이여도 기본값이 null인데 그 이유로는 다트의 모든 타입은 object이기 때문에 null이 기본값으로 초기화된다. (물론 null-safety가 활성화되어있다면 타입에 ?를 붙여야 에러 없이 null로 초기화) Number 위에서 먼저 말했던대로 숫자 타입도 기본적으로 Object로부터 파생된다. 그 다음에 특이하게 바로 int와 double이 아닌 num이란 타입이 있다. 이는 int와 double 모두 될 수 있는 숫자형 타입이다. 이미지 출처 : https://dart.dev/guides/language/numbers num 일반적인 산술연산자와 절댓값을 구해주는 ab..
1개는 알고있는 상태이기에 그 외의 개수에 의문이 든 것이라 생각하고 작성하지 않는다. 간혹 list를 다루는 글들을 보다보면 점이 2개, 3개 붙어있는 요상한 친구들이 보이는데 의미를 몰라 코드 해석을 정확히 할 수 없었다. 이에 대해 찾아보고 정리했다. 2개 (cascade notation) 생성한 object 자신의 멤버를 이어서 호출할 수 있도록 해준다. 출력 결과를 보면 알겠지만 paint1과 paint2는 같은 의미로 작성된다. 위 예제에선 없지만 멤버 함수도 호출된다. 하지만 알아둬야 할 것은 마지막에 호출한 멤버 함수의 return을 받거나 중간에 호출한 멤버 함수의 return을 받아 중간에 사용하는 것이 아니다. 제대로 이해 못하고 아래 예시 코드를 짜니 문제가 발생했다. 출력하면 에러..
class의 인스턴스를 새로 만들지 않도록 도와주는 키워드이다.(보통 싱글턴을 구현할 때 사용한다.) 싱글턴 패턴이란 class의 인스턴스를 하나만 생성하고 이를 재사용하도록 하는 디자인 패턴이다. factory 키워드가 쓰인 생성자는 무조건 자기 자신 타입의 인스턴스를 반환해야 한다. 예시 class TestFactory { static final TestFactory _factoryInstance = TestFactory._internal(); factory TestFactory() { return _factoryInstance; } TestFactory._internal() { print('call'); } } main() { var testFactory1 = TestFactory(); ..