<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Structures and Classes on Kelly Dev</title><link>https://kelly-chui.github.io/tags/structures-and-classes/</link><description>Recent content in Structures and Classes on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Jun 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/structures-and-classes/index.xml" rel="self" type="application/rss+xml"/><item><title>The Swift Programming Language. Structures And Classes (1)</title><link>https://kelly-chui.github.io/posts/the-swift-programming-language-09-structures-and-classes-1/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/the-swift-programming-language-09-structures-and-classes-1/</guid><description>&lt;figure class="theme-image"&gt;
&lt;img
class="theme-image__image theme-image__image--light"
src="https://kelly-chui.github.io/images/assets/swift-logo-light.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;img
class="theme-image__image theme-image__image--dark"
src="https://kelly-chui.github.io/images/assets/swift-logo-dark.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;/figure&gt;
&lt;h2 id="structures-and-classes"&gt;Structures and Classes&lt;/h2&gt;
&lt;p&gt;스트럭처와 클래스는 범용성 있는 유연한 구조이다. 상수, 변수, 함수를 작성하는 것 처럼 프로퍼티와 메소드를 작성하여 스트럭처와 클래스에 기능을 부여할 수 있다.&lt;/p&gt;
&lt;h3 id="comparing-structures-and-classes"&gt;Comparing Structures and Classes&lt;/h3&gt;
&lt;p&gt;스트럭처와 클래스는 많은 공통점을 가지고 있다. 둘 다 다음과 행동을 할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;값을 저장하기 위한 프로퍼티 정의&lt;/li&gt;
&lt;li&gt;기능(functionality)을 위한 메소드 정의&lt;/li&gt;
&lt;li&gt;서브스크립트 구문을 통하여 값에 접근할 수 있게 하는 서브스크립트 정의&lt;/li&gt;
&lt;li&gt;초기 값을 설정하기 위한 이니셜라이저 정의&lt;/li&gt;
&lt;li&gt;기본 구현보다 확장된 기능을 위한 확장성&lt;/li&gt;
&lt;li&gt;특정 종류에 대한 표준 기능을 제공하는 프로토콜 준수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;클래스는 스트럭처가 없는 추가 기능들이 있다.&lt;/p&gt;</description></item><item><title>The Swift Programming Language. Structures And Classes (2)</title><link>https://kelly-chui.github.io/posts/the-swift-programming-language-10-structures-and-classes-2/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/the-swift-programming-language-10-structures-and-classes-2/</guid><description>&lt;figure class="theme-image"&gt;
&lt;img
class="theme-image__image theme-image__image--light"
src="https://kelly-chui.github.io/images/assets/swift-logo-light.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;img
class="theme-image__image theme-image__image--dark"
src="https://kelly-chui.github.io/images/assets/swift-logo-dark.svg"
alt="Swift logo"
loading="lazy"
decoding="async"
&gt;
&lt;/figure&gt;
&lt;h3 id="structures-and-enumerations-are-value-types"&gt;Structures and Enumerations Are Value Types&lt;/h3&gt;
&lt;p&gt;값 타입은 변수나 상수에 할당되거나 함수에 전달될 때, 값이 복사되는 타입이다. 스위프트의 정수, 실수, 부울, 문자열, 배열, 딕셔너리와 같은 기본 타입들은 모두 값 타입이고 실제로 스트럭처로 구현되어있다.&lt;/p&gt;
&lt;p&gt;스위프트에서 모든 스트럭처와 열거형과 그 값 타입 프로퍼티들은 코드 안에서 복사되어 전달된다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;br&gt;
배열, 딕셔너리, 문자열과 같은 콜렉션은 전달(혹은 할당)될 때, 즉시 복사되지 않고 수정 작업이 이루어졌을때 복사를 하는 최적화가 되어있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="code-theme-github"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-swift" data-lang="swift"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;hd&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Resolution&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1920&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1080&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nv"&gt;cinema&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hd&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;이 예시는 &lt;a href="https://junmusu.tistory.com/79" title="앞선 예시"&gt;앞선 예시&lt;/a&gt;에 나온 스트럭처 Resolution의 상수 인스턴스 hd를 선언하고 프로퍼티를 초기화한다.&lt;/p&gt;</description></item></channel></rss>