<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.newiki.net/w/index.php?action=history&amp;feed=atom&amp;title=Dart_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4%29</id>
	<title>Dart (프로그래밍 언어) - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.newiki.net/w/index.php?action=history&amp;feed=atom&amp;title=Dart_%28%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4%29"/>
	<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;action=history"/>
	<updated>2026-04-12T05:17:03Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28637&amp;oldid=prev</id>
		<title>2022년 4월 10일 (일) 19:15에 Dennis님의 편집</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28637&amp;oldid=prev"/>
		<updated>2022-04-10T19:15:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 4월 10일 (일) 19:15 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot;&gt;7번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;7번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[구글]]에서 개발하고 관리하는 프로그래밍 언어. [[자바스크립트]]의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다.&amp;lt;ref&amp;gt;다만 이는 처음에 언어를 만들 때의 목표였고, 지금은 Dart라고 하면 뒤에서 얘기할 [[Flutter]]를 쓰기 위해서 배우는 언어로 여겨지고 있다.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[구글]]에서 개발하고 관리하는 프로그래밍 언어. [[자바스크립트]]의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다.&amp;lt;ref&amp;gt;다만 이는 처음에 언어를 만들 때의 목표였고, 지금은 Dart라고 하면 뒤에서 얘기할 [[Flutter]]를 쓰기 위해서 배우는 언어로 여겨지고 있다.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;구글이 개발을 주도하는 AngularJS가 2.0부터 [[타입스크립트]]를 개발 언어로 채택했다. 그러면서 [[자바스크립트]]를 뜻하는 &#039;JS&#039;를 떼어내고 Angular가 되었다.&amp;lt;/ref&amp;gt; &lt;/ins&gt;[[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 &amp;#039;대체&amp;#039;를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고&amp;lt;ref&amp;gt;인터넷 익스플로러의 점유율이 압도적인 시절에 마이크로소프트가 비주얼 [[베이직]] 기반의 VBScript를 밀었지만 [[자바스크립트]]의 아성을 무너뜨리는 데 실패했을 정도다.&amp;lt;/ref&amp;gt;, 같은 구글에서 만든 크롬 말고는 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며&amp;lt;ref&amp;gt;사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.&amp;lt;/ref&amp;gt;, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 [[자바스크립트]]의 단점이 영 마음에 들지 않는다면 [[타입스크립트]] 같은 것을 쓰면 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 크롬을 개발하고 있는 구글을 제외한 경쟁 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. 게다가 다른 웹 브라우저들로서는 경쟁자 구글한테 좋을 짓을, 대세도 아닌 언어에 굳이 애써서 투자할 이유도 없다. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다. 다만 Dart를 컴파일해서 [[자바스크립트]]를 만들 수 있기 때문에 웹 프론트엔드 개발용 언어로 써먹을 수는 있다. [[Flutter]] for 웹이 이런 방식을 채택하고 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 &amp;#039;대체&amp;#039;를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고&amp;lt;ref&amp;gt;인터넷 익스플로러의 점유율이 압도적인 시절에 마이크로소프트가 비주얼 [[베이직]] 기반의 VBScript를 밀었지만 [[자바스크립트]]의 아성을 무너뜨리는 데 실패했을 정도다.&amp;lt;/ref&amp;gt;, 같은 구글에서 만든 크롬 말고는 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며&amp;lt;ref&amp;gt;사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.&amp;lt;/ref&amp;gt;, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 [[자바스크립트]]의 단점이 영 마음에 들지 않는다면 [[타입스크립트]] 같은 것을 쓰면 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 크롬을 개발하고 있는 구글을 제외한 경쟁 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. 게다가 다른 웹 브라우저들로서는 경쟁자 구글한테 좋을 짓을, 대세도 아닌 언어에 굳이 애써서 투자할 이유도 없다. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다. 다만 Dart를 컴파일해서 [[자바스크립트]]를 만들 수 있기 때문에 웹 프론트엔드 개발용 언어로 써먹을 수는 있다. [[Flutter]] for 웹이 이런 방식을 채택하고 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;버전에 맥, [[리눅스]], [[윈도우]]를 지원하는 데스크톱 &lt;/ins&gt;버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;많이 알려져 있지는 않지만 구글이 만든 웹 프레임워크인 [[Angular]]도 Dart 언어로 이식한 [https://angulardart.xyz/ AngularDart]가 나와 있다. [[Angular]]는 [[타입스크립트]]를 사용하기 때문에 실제로 결과물을 실행시키려면 [[자바스크립트]]로 변환기 위한 [[컴파일]] 과정이 필요한데, Dart도 [[컴파일]]해서 [[자바스크립트]]로 변환할 수 있다&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;많이 알려져 있지는 않지만 구글이 만든 웹 프레임워크인 [[Angular]]도 Dart 언어로 이식한 [https://angulardart.xyz/ AngularDart]가 나와 있다. [[Angular]]는 [[타입스크립트]]를 사용하기 때문에 실제로 결과물을 실행시키려면 [[자바스크립트]]로 변환기 위한 [[컴파일]] 과정이 필요한데, Dart도 [[컴파일]]해서 [[자바스크립트]]로 변환할 수 있다&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;22부터는 &lt;/del&gt;변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;22도 &lt;/del&gt;정식으로 발표했다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12부터는 &lt;/ins&gt;변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12도 &lt;/ins&gt;정식으로 발표했다&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Dart 2.13부터는 dart create&amp;lt;ref&amp;gt;[[Flutter]]라면 flutter create.&amp;lt;/ref&amp;gt;로 새로운 앱이나 패키지를 만들면 null-safety가 기본 설정된다&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==기본 문법==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==기본 문법==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;33번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;33번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이렇게 하면 i는 정수형(int)으로 결정된다. 유형을 써주고 선언한 변수는 초깃값을 주지 않으면 [[null]]이 들어가는데,&amp;lt;ref&amp;gt;널 안전성이 지원되는 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;.12부터는 &amp;lt;syntaxhighlight lang=&quot;dart&quot; inline&amp;gt;int? i;&amp;lt;/syntaxhighlight&amp;gt; 와 같은 식으로 [[nullable]]하게 선언하지 않으면 반드시 [[null]] 아닌 초깃값을 대입해 줘야 한다.&amp;lt;/ref&amp;gt; Dart에서는 int도 클래스로 취급하기 때문에 int 변수를 선언할 때 초깃값을 주지 않으면 [[null]]이 들어간다는 점에 주의해야 한다.&amp;lt;ref&amp;gt;변수 정의 때 명시적으로 [[null]] 값으로 초기화 하면 Dart 컴파일러가 그렇게 하지 말라고 권고한다.&amp;lt;/ref&amp;gt; 변수가 일단 선언되고 나면 유형이 고정되므로 다른 유형을 대입할 수 없다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;이렇게 하면 i는 정수형(int)으로 결정된다. 유형을 써주고 선언한 변수는 초깃값을 주지 않으면 [[null]]이 들어가는데,&amp;lt;ref&amp;gt;널 안전성이 지원되는 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;.12부터는 &amp;lt;syntaxhighlight lang=&quot;dart&quot; inline&amp;gt;int? i;&amp;lt;/syntaxhighlight&amp;gt; 와 같은 식으로 [[nullable]]하게 선언하지 않으면 반드시 [[null]] 아닌 초깃값을 대입해 줘야 한다.&amp;lt;/ref&amp;gt; Dart에서는 int도 클래스로 취급하기 때문에 int 변수를 선언할 때 초깃값을 주지 않으면 [[null]]이 들어간다는 점에 주의해야 한다.&amp;lt;ref&amp;gt;변수 정의 때 명시적으로 [[null]] 값으로 초기화 하면 Dart 컴파일러가 그렇게 하지 말라고 권고한다.&amp;lt;/ref&amp;gt; 변수가 일단 선언되고 나면 유형이 고정되므로 다른 유형을 대입할 수 없다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l46&quot;&gt;46번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;46번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 위에서 볼 수 있듯이 [[C]]나 [[자바]]처럼 줄 끝에는 세미콜론(;)을 찍어줘야 한다.&amp;lt;ref&amp;gt;[[자바스크립트]]도 세미콜론이 문장의 끝을 뜻하지만 [[인터프리터]]가 코드를 해석할 때 자동으로 세미콜론을 넣어주는 기능이 있기 때문에 꼭 써야 하는 것은 아니다. [[Go 언어]]의 [[컴파일러]]도 세미콜론 자동 삽입을 지원한다.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 위에서 볼 수 있듯이 [[C]]나 [[자바]]처럼 줄 끝에는 세미콜론(;)을 찍어줘야 한다.&amp;lt;ref&amp;gt;[[자바스크립트]]도 세미콜론이 문장의 끝을 뜻하지만 [[인터프리터]]가 코드를 해석할 때 자동으로 세미콜론을 넣어주는 기능이 있기 때문에 꼭 써야 하는 것은 아니다. [[Go 언어]]의 [[컴파일러]]도 세미콜론 자동 삽입을 지원한다.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;요즘 언어들은 [[null]] 값을 쓰지 못하게 하거나, 제한을 많이 두거나, [[널 안전성]] 연산자를 제공하는 경향이 있는데, Dart는 기본으로 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 제공하다가 버전 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1&lt;/del&gt;.12부터는 [[널 안전성]] 기능을 대폭 강화했다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;요즘 언어들은 [[null]] 값을 쓰지 못하게 하거나, 제한을 많이 두거나, [[널 안전성]] 연산자를 제공하는 경향이 있는데, Dart는 기본으로 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 제공하다가 버전 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;.12부터는 [[널 안전성]] 기능을 대폭 강화했다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====변경 불가능한 변수====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;====변경 불가능한 변수====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l62&quot;&gt;62번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;62번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final로 지정된 변수에 컬렉션을 대입할 수 있다. 차이가 있다면, final에 대입한 컬렉션은 다른 컬렉션을 대입할 수 없지만 컬렉션의 내용은 바꿀 수 있는데 반해, const는 내용을 바꿀 수 없는, 즉 변경 불가(immutable) 컬렉션이 된다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final로 지정된 변수에 컬렉션을 대입할 수 있다. 차이가 있다면, final에 대입한 컬렉션은 다른 컬렉션을 대입할 수 없지만 컬렉션의 내용은 바꿀 수 있는데 반해, const는 내용을 바꿀 수 없는, 즉 변경 불가(immutable) 컬렉션이 된다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final로 지정된 변수에 클래스 객체를 대입할 수 있다. 초깃값이 정해진 다음에는 다른 객체를 대입할 수 없으나 객체의 속성값을 바꾸는 것은 가능하다. 반면 const에 클래스 객체를 대입하려면 대입하는 객체도 const여야 하는데, 그 클래스의 생성자가 const로 지정되어 있어야만 const 객체를 만들 수 있다. const 생성자는 매개변수로 상수값이나 다른 const 값만 받을 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;클래스의 변수도 final 혹은 const일 수 있다. 단, final 변수는 인스턴스 변수일 수 있지만 const 변수는 반드시 static 변수여야 한다.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;final로 지정된 변수에 클래스 객체를 대입할 수 있다. 초깃값이 정해진 다음에는 다른 객체를 대입할 수 없으나 객체의 속성값을 바꾸는 것은 가능하다. 반면 const에 클래스 객체를 대입하려면 대입하는 객체도 const여야 하는데, 그 클래스의 생성자가 const로 지정되어 있어야만 const 객체를 만들 수 있다. const 생성자는 매개변수로 상수값이나 다른 const 값만 받을 수 있다&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. const 생성자를 쓸 수 있으려면 클래스의 모든 필드가 const 아니면 final이어야 한다&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===함수===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===함수===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l313&quot;&gt;313번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;315번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;변수를 선언할 때 바로 초기화 하지는 못하지만 변수를 사용하기 전에 확실하게 초기화를 할 수 있는 변수라면 late를 붙여서 선언한다. 이 변수를 초기화 전에 사용하려고 하면 오류를 일으킨다. late final이라면 final과 마찬가지로 값은 단 한 번만 대입할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;변수를 선언할 때 바로 초기화 하지는 못하지만 변수를 사용하기 전에 확실하게 초기화를 할 수 있는 변수라면 late를 붙여서 선언한다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;예를 들어, Flutter의 stateful widget은 onInit()라는 초기화 메서드가 있으므로 클래스 생성자에서 바로 초깃값을 줄 수 없는 변수를 late final로 해 놓고 onInit()에서 초깃값을 줄 수 있다.&amp;lt;/ref&amp;gt; &lt;/ins&gt;이 변수를 초기화 전에 사용하려고 하면 오류를 일으킨다. late final이라면 final과 마찬가지로 값은 단 한 번만 대입할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;late는 로컬에서도 쓸 수 있지만 권장하지 않는다. 이게 쓸모가 있는 경우라면 try-catch 블럭을 썼을 때다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;late는 로컬에서도 쓸 수 있지만 권장하지 않는다. 이게 쓸모가 있는 경우라면 try-catch 블럭을 썼을 때다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28353&amp;oldid=prev</id>
		<title>2022년 2월 2일 (수) 13:33에 Dennis님의 편집</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28353&amp;oldid=prev"/>
		<updated>2022-02-02T13:33:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 2월 2일 (수) 13:33 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l13&quot;&gt;13번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;13번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;많이 알려져 있지는 않지만 구글이 만든 웹 프레임워크인 [[Angular]]도 Dart 언어로 이식한 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;AngularDart가 &lt;/del&gt;나와 있다. [[Angular]]는 [[타입스크립트]]를 사용하기 때문에 실제로 결과물을 실행시키려면 [[자바스크립트]]로 변환기 위한 [[컴파일]] 과정이 필요한데, Dart도 [[컴파일]]해서 [[자바스크립트]]로 변환할 수 있다&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;많이 알려져 있지는 않지만 구글이 만든 웹 프레임워크인 [[Angular]]도 Dart 언어로 이식한 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[https://angulardart.xyz/ AngularDart]가 &lt;/ins&gt;나와 있다. [[Angular]]는 [[타입스크립트]]를 사용하기 때문에 실제로 결과물을 실행시키려면 [[자바스크립트]]로 변환기 위한 [[컴파일]] 과정이 필요한데, Dart도 [[컴파일]]해서 [[자바스크립트]]로 변환할 수 있다&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, 1.22부터는 변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart 1.22도 정식으로 발표했다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, 1.22부터는 변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart 1.22도 정식으로 발표했다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28352&amp;oldid=prev</id>
		<title>2022년 2월 2일 (수) 13:32에 Dennis님의 편집</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28352&amp;oldid=prev"/>
		<updated>2022-02-02T13:32:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 2월 2일 (수) 13:32 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;5번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;5번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;ref&amp;gt;딱 한 줄로 더 간단하게 하자면 &amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot; inline&amp;gt;void main() =&amp;gt; print(&amp;quot;You&amp;#039;re watching NeWiki.&amp;quot;);&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;ref&amp;gt;딱 한 줄로 더 간단하게 하자면 &amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot; inline&amp;gt;void main() =&amp;gt; print(&amp;quot;You&amp;#039;re watching NeWiki.&amp;quot;);&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[구글]]에서 개발하고 관리하는 프로그래밍 언어. [[자바스크립트]]의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[구글]]에서 개발하고 관리하는 프로그래밍 언어. [[자바스크립트]]의 단점을 보완해서 웹 개발, 특히 웹 프론트엔드 개발의 편의성을 도모하기 위해서 만들어진 언어다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;다만 이는 처음에 언어를 만들 때의 목표였고, 지금은 Dart라고 하면 뒤에서 얘기할 [[Flutter]]를 쓰기 위해서 배우는 언어로 여겨지고 있다.&amp;lt;/ref&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l12&quot;&gt;12번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;12번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;많이 알려져 있지는 않지만 구글이 만든 웹 프레임워크인 [[Angular]]도 Dart 언어로 이식한 AngularDart가 나와 있다. [[Angular]]는 [[타입스크립트]]를 사용하기 때문에 실제로 결과물을 실행시키려면 [[자바스크립트]]로 변환기 위한 [[컴파일]] 과정이 필요한데, Dart도 [[컴파일]]해서 [[자바스크립트]]로 변환할 수 있다&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, 1.22부터는 변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart 1.22도 정식으로 발표했다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart도 최근 프로그래밍 언어의 추세인 [[널 안전성]]을 지원하긴 하지만 좀 반쪽짜리인 느낌이 있는데, 1.22부터는 변수를 기본으로 non-nullable로 하는 것을 비롯해서 [[코틀린]] 수준의 [[널 안전성]]을 제공한다고 예고하고 있다. 2021년 3월 [[구글]]이 온라인으로 개최한 Flutter Engaged 행사에서 [[Flutter]] 2를 공식 발표했으며 이와 함께 [[널 안전성]]을 지원하는 Dart 1.22도 정식으로 발표했다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28094&amp;oldid=prev</id>
		<title>Dennis: /* 변수 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28094&amp;oldid=prev"/>
		<updated>2022-01-11T09:54:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;변수&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 1월 11일 (화) 09:54 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;38번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;38번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;정적 타이핑 언어와 동적 타이핑 언어 중 뭐가 더 낫냐는 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;문제로 많은 논란이 여전하지만 어쨌거나 &lt;/del&gt;정적 타이핑 쪽을 선호해서 [[타입스크립트]]와 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;갈은 &lt;/del&gt;도구를 쓰는 사람들에게는 Dart가 좀 더 익숙할 것이다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;정적 타이핑 언어와 동적 타이핑 언어 중 뭐가 더 낫냐는 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;문제는 여전히 논쟁거리지만 &lt;/ins&gt;정적 타이핑 쪽을 선호해서 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[자바스크립트]] 대신 &lt;/ins&gt;[[타입스크립트]]와 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;같은 &lt;/ins&gt;도구를 쓰는 사람들에게는 Dart가 좀 더 익숙할 것이다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;다만 &lt;/del&gt;Dart에는 dynamic이란 유형이 있으며, 어떤 유형이든지 받는다. dynamic 유형을 사용하면 동적 타이핑 언어처럼 사용할 수 있다. 제네릭에도 쓸 수 있으며, 리스트나 맵 같은 컬렉션 개체에 사용하면 어떤 유형이든지 가질 수 있는 컬렉션을 만들 수 있다. 변수를 var로 선언하면서 초깃값도 주지 않으면 dynamic 유형으로 간주한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;대신 &lt;/ins&gt;Dart에는 dynamic이란 유형이 있으며, 어떤 유형이든지 받는다. dynamic 유형을 사용하면 동적 타이핑 언어처럼 사용할 수 있다. 제네릭에도 쓸 수 있으며, 리스트나 맵 같은 컬렉션 개체에 사용하면 어떤 유형이든지 가질 수 있는 컬렉션을 만들 수 있다. 변수를 var로 선언하면서 초깃값도 주지 않으면 dynamic 유형으로 간주한다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;이는 동적 타이핑 언어인 [[자바스크립트]]와 호환성을 염두에 둔 설계로 보인다. 정적 타이핑 언어의 목적을 생각한다면 꼭 필요한 경우가 아니면 쓰지 말자.&amp;lt;/ref&amp;gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 위에서 볼 수 있듯이 [[C]]나 [[자바]]처럼 줄 끝에는 세미콜론(;)을 찍어줘야 한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 위에서 볼 수 있듯이 [[C]]나 [[자바]]처럼 줄 끝에는 세미콜론(;)을 찍어줘야 한다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[[자바스크립트]]도 세미콜론이 문장의 끝을 뜻하지만 [[인터프리터]]가 코드를 해석할 때 자동으로 세미콜론을 넣어주는 기능이 있기 때문에 꼭 써야 하는 것은 아니다. [[Go 언어]]의 [[컴파일러]]도 세미콜론 자동 삽입을 지원한다.&amp;lt;/ref&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;요즘 언어들은 [[null]] 값을 쓰지 못하게 하거나, 제한을 많이 두거나, [[널 안전성]] 연산자를 제공하는 경향이 있는데, Dart는 기본으로 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 제공하다가 버전 1.12부터는 [[널 안전성]] 기능을 대폭 강화했다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;요즘 언어들은 [[null]] 값을 쓰지 못하게 하거나, 제한을 많이 두거나, [[널 안전성]] 연산자를 제공하는 경향이 있는데, Dart는 기본으로 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 제공하다가 버전 1.12부터는 [[널 안전성]] 기능을 대폭 강화했다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28039&amp;oldid=prev</id>
		<title>Dennis: /* 널 안전성 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28039&amp;oldid=prev"/>
		<updated>2022-01-06T15:17:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;널 안전성&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 1월 6일 (목) 15:17 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l275&quot;&gt;275번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;275번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b ?? 0; // b가 null이면 ?? 뒤의 값을 대입한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b ?? 0; // b가 null이면 ?? 뒤의 값을 대입한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b! // 변수 뒤에 ! 기호를 붙여 강제로 대입한다. 실행했을 때 b가 null이면 런타임 오류를 일으킨다.&amp;lt;ref&amp;gt;사실 ! 기호는 널 안전성이 추구하는 목적과는 맞지 않는다. 그러나 실제로 프로그래밍을 하다 보면 이 시점에서는 null이 들어갈 가능성이 전혀 없는데도 변수가 처음에 nullable로 선언되다 보니 nullable하지 않은 변수에 대입을 못 하는 상황이 있다 보니 재량권을 주는 것이다. 따라서 ! 기호는 신중하게 써야 한다.&amp;lt;/ref&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b! // 변수 뒤에 ! 기호를 붙여 강제로 대입한다. 실행했을 때 b가 null이면 런타임 오류를 일으킨다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/ins&gt;&amp;lt;ref&amp;gt;사실 ! 기호는 널 안전성이 추구하는 목적과는 맞지 않는다. 그러나 실제로 프로그래밍을 하다 보면 이 시점에서는 null이 들어갈 가능성이 전혀 없는데도 변수가 처음에 nullable로 선언되다 보니 nullable하지 않은 변수에 대입을 못 하는 상황이 있다 보니 재량권을 주는 것이다. 따라서 ! 기호는 신중하게 써야 한다.&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;nullable한 변수는 스코프 연산자(.)도 바로 쓸 수 없으며 ?.로 해 줘야 한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;nullable한 변수는 스코프 연산자(.)도 바로 쓸 수 없으며 ?.로 해 줘야 한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28038&amp;oldid=prev</id>
		<title>Dennis: /* 널 안전성 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=28038&amp;oldid=prev"/>
		<updated>2022-01-06T15:16:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;널 안전성&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022년 1월 6일 (목) 15:16 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l268&quot;&gt;268번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;268번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[null]] 값을 넣을 수 있는, 즉 nullable한 변수를 만들려면 데이터 유형 뒤에 ? 기호를 붙여줘야 하며, 그렇지 않은 변수에는 [[null]] 값을 넣을 수 없다. nullable하지 않은 변수에 [[null]]을 대입하려는 시도는 컴파일 단계에서 잡아낸다. nullable 하지 않은 변수라면 &amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot; inline&amp;gt;if (a == null)&amp;lt;/syntaxhighlight&amp;gt; 같은 테스트도 불가능하며 컴파일 단계에서 잡아낸다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[null]] 값을 넣을 수 있는, 즉 nullable한 변수를 만들려면 데이터 유형 뒤에 ? 기호를 붙여줘야 하며, 그렇지 않은 변수에는 [[null]] 값을 넣을 수 없다. nullable하지 않은 변수에 [[null]]을 대입하려는 시도는 컴파일 단계에서 잡아낸다. nullable 하지 않은 변수라면 &amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot; inline&amp;gt;if (a == null)&amp;lt;/syntaxhighlight&amp;gt; 같은 테스트도 불가능하며 컴파일 단계에서 잡아낸다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 nullable한 변수는 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;null일 &lt;/del&gt;가능성이 있으므로 그렇지 않은 변수에 바로 대입할 수 없다. 만약 대입하려면 두 가지 방법이 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;또한 nullable한 변수는 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[null]]일 &lt;/ins&gt;가능성이 있으므로 그렇지 않은 변수에 바로 대입할 수 없다. 만약 대입하려면 두 가지 방법이 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l275&quot;&gt;275번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;275번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b ?? 0; // b가 null이면 ?? 뒤의 값을 대입한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b ?? 0; // b가 null이면 ?? 뒤의 값을 대입한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b! // 변수 뒤에 ! 기호를 붙여 강제로 대입한다. b가 null이면 오류를 일으킨다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;a = b! // 변수 뒤에 ! 기호를 붙여 강제로 대입한다. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;실행했을 때 &lt;/ins&gt;b가 null이면 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;런타임 &lt;/ins&gt;오류를 일으킨다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;사실 ! 기호는 널 안전성이 추구하는 목적과는 맞지 않는다. 그러나 실제로 프로그래밍을 하다 보면 이 시점에서는 null이 들어갈 가능성이 전혀 없는데도 변수가 처음에 nullable로 선언되다 보니 nullable하지 않은 변수에 대입을 못 하는 상황이 있다 보니 재량권을 주는 것이다. 따라서 ! 기호는 신중하게 써야 한다.&amp;lt;/ref&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=26543&amp;oldid=prev</id>
		<title>2021년 10월 1일 (금) 16:44에 Dennis님의 편집</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=26543&amp;oldid=prev"/>
		<updated>2021-10-01T16:44:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 10월 1일 (금) 16:44 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;9번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;9번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]는 간단한 문법으로 진입장벽이 낮은 편이지만 코드가 복잡해지면 단점도 많은 언어다. 원래 웹 페이지에 간단한 동적 기능을 부여하기 위해서 만들어졌던 스크립트 언어였지만 [[AJAX]]가 대박이 나고 [[JIT 컴파일]] 덕택에 처리 속도로 엄청나게 빨라지면서 활용 폭이 엄청나게 넓어졌다. 여기에 jQuery라든가 Angular, 리액트 같은 프레임워크까지 등장하면서  활용 폭이 더더더욱 확대되고, 웬만한 데스크톱이나 모바일 프로그램 뺨칠 정도로 복잡하고 긴 코드들을 개발할 일이 많아졌다. 그러다 보니 전에는 별거 아니었던 [[자바스크립트]]의 단점들이 부각되었다. 변수의 유형을 지정하지 않고 서로 다른 유형의 데이터들을 연산하려고 해도 어떻게든 변환해서 이상한 값으로라도 결과를 낸다든지, [[자바스크립트]] 개발자들의 머리를 쥐어뜯게 만드는 [[콜백 지옥]] 문제라든가... 물론 [[자바스크립트]]도 개량을 거치면서 프로미스(promise)와 같은 방법으로 [[콜백 지옥]]을 해소시키는 지원책들이 나오고 있고 async, await 키워드로 비동기 프로그래밍도 한결 편리해졌지만 언어의 근본적인 한계점이 있는지라 이를 넘기 위해 새로운 언어들이 여럿 제안되었다. 이 방면의 원조격이라 할 수 있는 커피스크립트라든가, 요즘 사용자층이 넓어져서 구글에서 내부 공식 개발 언어 중 하나로 지정할 정도까지 이른 [[타입스크립트]] 같은 게 그 사례. Dart 역시 그런 목적을 가지고 있었다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 &#039;대체&#039;를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고, 같은 구글에서 만든 크롬 말고는 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며&amp;lt;ref&amp;gt;사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.&amp;lt;/ref&amp;gt;, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 [[자바스크립트]]의 단점이 영 마음에 들지 않는다면 [[타입스크립트]] 같은 것을 쓰면 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 크롬을 개발하고 있는 구글을 제외한 경쟁 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. 게다가 다른 웹 브라우저들로서는 경쟁자 구글한테 좋을 짓을, 대세도 아닌 언어에 굳이 애써서 투자할 이유도 없다. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다. 다만 Dart를 컴파일해서 [[자바스크립트]]를 만들 수 있기 때문에 웹 프론트엔드 개발용 언어로 써먹을 수는 있다. [[Flutter]] for 웹이 이런 방식을 채택하고 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;커피스크립트나 [[타입스크립트]]가 컴파일을 통해 [[자바스크립트]]를 결과물로 내놓아서 호환성을 유지하는데 반해, Dart는 아예 &#039;대체&#039;를 목표로 했다. 즉 웹 브라우저가 Dart 실행 엔진을 가지고 Dart를 바로 실행하는 것. 그러나 이 전략은 실패로 끝났고&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;인터넷 익스플로러의 점유율이 압도적인 시절에 마이크로소프트가 비주얼 [[베이직]] 기반의 VBScript를 밀었지만 [[자바스크립트]]의 아성을 무너뜨리는 데 실패했을 정도다.&amp;lt;/ref&amp;gt;&lt;/ins&gt;, 같은 구글에서 만든 크롬 말고는 Dart를 직접 지원하는 웹 브라우저가 없다. [[자바스크립트]]가 단점은 있지만 그렇게 나쁜 언어인 것도 아니며&amp;lt;ref&amp;gt;사실 어떤 프로그래밍 언어든 단점이 없을 리 없다.&amp;lt;/ref&amp;gt;, 이미 많은 개발자를 가지고 있으며 jQuery, 리액트를 비롯한 풍부한 프레임워크도 가지고 있다. 여기에 [[자바스크립트]]의 단점이 영 마음에 들지 않는다면 [[타입스크립트]] 같은 것을 쓰면 단점을 피해갈 수도 있다. [[자바스크립트]] 자체도 개선을 거쳐서 여러 가지 새로운 기능들을 추가했기 때문에 과거의 문제점 중에 여러 가지가 해소되기도 했다. 그러니 크롬을 개발하고 있는 구글을 제외한 경쟁 웹 브라우저 제작자들로서는 [[자바스크립트]] 엔진의 속도 경쟁에도 정신 없는데 굳이 Dart 엔진을 또 만들 이유가 없는 것. 게다가 다른 웹 브라우저들로서는 경쟁자 구글한테 좋을 짓을, 대세도 아닌 언어에 굳이 애써서 투자할 이유도 없다. Dart를 컴파일해서 [[자바스크립트]]로 변환하는 방법도 있긴 하지만 이쪽은 [[타입스크립트]]가 대세를 장악한 상태다. 심지어 구글도 내부 공식 개발 언어로 [[타입스크립트]]를 사용할 정도니 웹 프론트엔드 쪽으로는 사실상 Dart를 포기했다고 봐도 과언은 아니다. 다만 Dart를 컴파일해서 [[자바스크립트]]를 만들 수 있기 때문에 웹 프론트엔드 개발용 언어로 써먹을 수는 있다. [[Flutter]] for 웹이 이런 방식을 채택하고 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;사정이 이렇다 보니 거의 쓰레기 취급을 받아 왔다. 배울 가치가 없는 언어, 최악의 언어 랭킹을 뽑을 때 최소 상위권이고 정상에 등극하는 일도 종종 있다. 하지만 구글이 누군가. 포기하지 않고 꾸준히 밀어준 끝에 사용자가 상당히 늘어난 편이다. 원래 목적이었던 웹 프론트엔드 쪽에서는 여전히 천덕꾸러기 신세지만 모바일 개발 쪽에서 세를 불려 나가고 있다. 그 이유는 역시 [[Flutter]]. 구글에서 들고 나온 크로스플랫폼 개발 프레임워크인 [[Flutter]]를 사용하면 [[안드로이드]]와 [[iOS]]용 앱을 동시에 개발할 수 있다. 모바일을 위한 크로스플랫폼 프레임워크로는 이미 아파치 코르도바나 리액트 네이티브, [[자마린]] 같은 것들이 있지만 Flutter는 네이티브급 성능을 내면서도 양쪽 OS 모두에서 똑같은 인터페이스를 보장한다는 면에서 주목 받고 있다. 게다가 웹 버전까지 나와서 다시 웹 프론트엔드 개발에 Dart를 밀고 있다.&amp;lt;ref&amp;gt;다만 이전과는 달리 [[HTML]]과 CSS까지 포함해서 아예 통으로 개발하는 방식이다.&amp;lt;/ref&amp;gt; 자세한 내용은 [[Flutter]] 참조.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=26280&amp;oldid=prev</id>
		<title>Dennis: /* 개발 환경 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=26280&amp;oldid=prev"/>
		<updated>2021-09-18T19:03:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;개발 환경&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 9월 18일 (토) 19:03 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l351&quot;&gt;351번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;351번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==개발 환경==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==개발 환경==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;기본 개발 환경은 텍스트(코드) 편집기와 명령행이다. Dart SDK혹은 Flutter SDK를 설치했다면&amp;lt;ref&amp;gt;그리고 PATH 설정을 제대로 했다면&amp;lt;/ref&amp;gt;명령행에 &#039;dart&#039;, 그리고 그 뒤에 필요한 명령과 옵션을 붙여서 코드를 실행시킬 수 있다. 단, 파이썬처럼 dart 명령행 프로그램이 그 안에서 코드를 입력하고 실행할 수 있는 기능은 제공하지 않고 있지 않다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;기본 개발 환경은 텍스트(코드) 편집기와 명령행이다. Dart SDK혹은 Flutter SDK를 설치했다면&amp;lt;ref&amp;gt;그리고 PATH 설정을 제대로 했다면&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&lt;/ins&gt;&amp;lt;/ref&amp;gt;명령행에 &#039;dart&#039;, 그리고 그 뒤에 필요한 명령과 옵션을 붙여서 코드를 실행시킬 수 있다. 단, 파이썬처럼 dart 명령행 프로그램이 그 안에서 코드를 입력하고 실행할 수 있는 기능은 제공하지 않고 있지 않다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;웹 브라우저에서 간단하게 코드를 입력하고 실행시켜 볼 수 있는 Dartpad도 제공한다. 코드를 온라인에 저장하는 기능은 제공하지 않으므로 필요하다면 복사 + 붙여넣기를 사용해야 한다. 간단한 Flutter 코드도 돌려볼 수 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있지만 프로젝트 자동 생성 기능 같은 것은 없으므로 맨땅부터 코딩해야 한다&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;웹 브라우저에서 간단하게 코드를 입력하고 실행시켜 볼 수 있는 Dartpad도 제공한다. 코드를 온라인에 저장하는 기능은 제공하지 않으므로 필요하다면 복사 + 붙여넣기를 사용해야 한다. 간단한 Flutter 코드도 돌려볼 수 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있다&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;IDE로는 [[안드로이드 스튜디오]]와 [[비주얼 스튜디오 코드]]를 쓸 수 있다. 구글에서 제공하는 플러그인을 설치하면 Dart 및 [[Flutter]] 개발 환경으로 사용할 수 있으며 상당히 편리하다. 다만 [[Flutter]]에 최적화되어 있어서 [[Flutter]]가 아닌 Dart 개발은 좀 불편할 수 있다. &amp;lt;del&amp;gt;그런데 [[Flutter]] 말고 Dart가 쓸데가 있긴 한가.&amp;lt;/del&amp;gt; 디버깅은 아직은 좀 세밀한 부분이 부족한 점은 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;IDE로는 [[안드로이드 스튜디오]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;[[안드로이드 스튜디오]]가 [[IntelliJ IDEA]]로부터 나온 것이어서 이것도 역시 플러그인을 설치하면 Flutter 개발환경으로 쓸 수 있다.&amp;lt;/ref&amp;gt;&lt;/ins&gt;와 [[비주얼 스튜디오 코드]]를 쓸 수 있다. 구글에서 제공하는 플러그인을 설치하면 Dart 및 [[Flutter]] 개발 환경으로 사용할 수 있으며 상당히 편리하다. 다만 [[Flutter]]에 최적화되어 있어서 [[Flutter]]가 아닌 Dart 개발은 좀 불편할 수 있다. &amp;lt;del&amp;gt;그런데 [[Flutter]] 말고 Dart가 쓸데가 있긴 한가.&amp;lt;/del&amp;gt; 디버깅은 아직은 좀 세밀한 부분이 부족한 점은 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{각주}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{각주}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:프로그래밍 언어]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:프로그래밍 언어]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=25175&amp;oldid=prev</id>
		<title>Dennis: /* 널 안전성 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=25175&amp;oldid=prev"/>
		<updated>2021-05-23T02:24:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;널 안전성&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 5월 23일 (일) 02:24 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l258&quot;&gt;258번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;258번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===[[널 안전성]]===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===[[널 안전성]]===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart는 처음에는 기본으로 변수의 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 지원했다가 Dart 1.12부터는 &#039;sound null safety&#039;라는 이름으로 널 안전성을 대폭 강화했다. 기법을 살펴보면 [[안드로이드]] 개발 언어로 [[구글]]이 적극 밀어주고 있는 [[코틀린]]과 비슷한 면이 많이 보인다. 기본 개념은 [[null]] 값을 쓸 수 있다고 명시하지 않은 변수에는 [[null]] 값을 허용하지 않는다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dart는 처음에는 기본으로 변수의 [[null]] 값을 허용하는 대신 [[널 안전성]] 관련 연산자를 몇 가지 지원했다가 Dart 1.12부터는 &#039;sound null safety&#039;라는 이름으로 널 안전성을 대폭 강화했다&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. [[Flutter]]는 2.2부터 새로운 프로젝트를 만들 때 널 안전성을 기본으로 적용한다&lt;/ins&gt;. 기법을 살펴보면 [[안드로이드]] 개발 언어로 [[구글]]이 적극 밀어주고 있는 [[코틀린]]과 비슷한 면이 많이 보인다. 기본 개념은 [[null]] 값을 쓸 수 있다고 명시하지 않은 변수에는 [[null]] 값을 허용하지 않는다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;dart&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
	<entry>
		<id>https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=24908&amp;oldid=prev</id>
		<title>Dennis: /* 기본 문법 */</title>
		<link rel="alternate" type="text/html" href="https://www.newiki.net/w/index.php?title=Dart_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D_%EC%96%B8%EC%96%B4)&amp;diff=24908&amp;oldid=prev"/>
		<updated>2021-04-22T13:45:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;기본 문법&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2021년 4월 22일 (목) 13:45 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;108번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;108번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]와 마찬가지로 Dart의 함수도 [[일급 객체]]다. 함수를 변수에 대입할 수 있도록 Dart는 Function이라는 유형을 제공한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[자바스크립트]]와 마찬가지로 Dart의 함수도 [[일급 객체]]다. 함수를 변수에 대입할 수 있도록 Dart는 Function이라는 유형을 제공한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==예외 처리==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[C++]]나 [[자바]]처럼 try-catch 문을 지원한다. [[자바]]처럼 엄격하게 checked exception을 요구하지 않는다.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==클래스==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==클래스==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dennis</name></author>
	</entry>
</feed>