안녕하세요
Swift라는 언어에 관심이 생기고 Swift 언어쪽 진로를 희망하여 본격적으로 배우기 전에
유튜브에 나와있는 강의를 통해서 먼저 공부를 해보려고 합니다.
(*해당 글을 smile han님의 유튜브 영상을 참고하여 작성하였음을 다시 한 번 말씀드립니다.)
https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA/playlists
데이터 타입(자료형, data type)
스위프트 프로그램에서 숫자를 저장
- var mynumber = 10 (mynumber이라는 이름의 변수를 생성하고 숫자 10을 할당함)
- var mynumber : Int = 10
(초기값이 있을 경우에는 컴파일러가 타입 추론(type inference)을 하므로 데이터 타입을 명시할 필요가 없다. 즉, Int는 생략이 가능하다.)
기본적인 자료형
Bool, Character, Int, Float, Double, String, Void 등이 있다.
스위프트 언어를 사용할 때 주의점은 x= 10, x =10등과 같이 '=' 양쪽에 일관된 공백이 있어야 한다. 만약 예시처럼 일관된 공백이 없을 경우 error '='must have consistent whitespace on both sides 라는 에러가 발생하게 된다.
출력하는 방법
Swift언어에서 print 즉, 실행 결과를 출력하는 방법은 print를 사용하는 것이다. 이 점은 파이썬하고 같다.
자료형의 종류와 크기를 알아내는 방법
var x = 322
type(of:x)
let a = MemoryLayout.size(ofValue: x)
let b = MemoryLayout<Int>.size
print(a, b)
이 소스에서 x의 자료형의 종류와 크기를 알아내고 싶다면 아래 이미지와 같이 2행을 print로 감싸주면 된다.
let a = MemoryLayout.size(ofValue: x)
let b = MemoryLayout<Int>.size
이 2가지는 자료형의 크기를 알려주는 역할로 함수에서 배우게 된다. 첫 번째 방법은 MemoryLayout.size(ofValue: )까지는 그대로 쓰고 콜론 ':' 한 칸 뒤에 변수를 넣어주면 이 변수가 몇 바이트인지 크기가 나온다. 만약 직접 쓰고 싶다면 아래 방법인 MemoryLayout<>.size을 쓰고 <> 안에 자료형을 넣어주면 된다. (Double형이 궁금하다면 <> 안에 Int 대신 Double을 넣어주면 된다.)
정수 테이터 타입 : Int
Int형은 정수를 저장하는 데 사용하며 8비트, 16비트, 32비트, 64비트 정수를 지원한다. (Int8, Int16, Int32, Int64 타입)
부호가 없는 정수는 UInt8, UInt16, UInt32, UInt64 타입
애플은 특정 크기의 데이터 타입보다 Int 데이터 타입을 권장한다고 한다.
Int 데이터 타입은 해당 코드가 실행되는 플랫폼에 맞는 정수 크기를 사용한다.
출력하고 싶은 변수나 상수는 아래처럼 만들면 된다.
\(여기에 출력하고 싶은 변수나 상수를 입력)
부동 소수점 데이터 타입: Double
소수점이 있는 숫자
예) 3.141592
부동 소수점 데이터 타입은 Float와 Double 타입을 제공한다.
Double 타입은 64비트로 부동 소수점 수를 저장한다. 소수점 15자리 정확도
Float 데이터 타입은 32비트로 부동 소수점 수를 저장한다. 소수점 6자리 정확도
Double형이 기본이 된다.
부울 데이터 타입: Bool
참 또는 거짓(1 또는 0) 조건을 처리할 데이터 타입이다.
Boolean 데이터 타입을 처리하기 위하여 두 개의 불리언 상수값(true/false)을 사용한다.
문자 데이터 타입: Character
문자, 숫자, 문장 부호, 심볼 같은 유니코드(Unicode) 문자 하나를 저장한다.
일반적으로 C언어에서는 Character형은 ''를 사용하고 String은 ""를 사용하지만 Swift에서는 둘 다 ""를 한다.
문자열 데이터 타입: String
단어나 문장을 구성하는 일련의 문자이다.
저장, 검색, 비교, 문자열 연결, 수정 등의 기능을 포함한다.
문자열 보간(String interpolation)을 사용하여 문자열과 변수, 상수, 표현식, 함수 호출의 조합으로 만들 수도 있다.
특수 문자/이스케이프 시퀀스
특수 문자는 표준 문자 세트뿐만 아니라 문자열에 개행, 탭 또는 유니코드 값과 같은 항목을 지정할 수 있는 여러 특수문자도 있다.
이스케이프 시퀀스 (escape sequence)는 C언어랑 비슷하다. 특수 문자들은 역슬래시 '\'를 접두어로 하여 구별한다.
역슬래시로 시작되는 모든 문자는 특수 문자로 간주한다.
일반적으로 많이 사용되는 특수 문자
- \ n - 개행
- \ r - 캐리지 리턴 (carriage return)
- \ t - 수평 탭
- \ \ - 역슬래시
- \ " - 큰따옴표(문자열 선언부에 큰따옴표를 쓰고 싶을 경우에 사용됨)
- \ ' - 작은따옴표(문자열 선언부에 작은따옴표를 쓰고 싶을 경우에 사용됨)
- \ u{nn} - nn 위치에 유니코드 문자를 표현하는 두 개의 16진수가 배치되는 1바이트 유니코드 스칼라
- \ u{nnnn} - nnnn 위치에 유니코드 문자를 표현하는 네 개의 16진수가 배치되는 2바이트 유니코드 스칼라
- \ U{nnnnnnnn) - nnnnnnnn 위치에 유니코드 문자를 표현하는 네 개의 16진수가 배치되는 4바이트 유니코드 스칼라
변수: var
기본적으로 변수(variable)는 프로그램에서 사용될 데이터를 저장하기 위한 메모리 공간이다.
변수에 할당된 값은 변경이 가능하다.
상수: let
상수(constant)는 데이터 값을 저장하기 위하여 메모리 내의 명명된 공간을 제공한다는 점에서 변수와 비슷하다.
어떤 값이 한 번 할당되면 이후에 변경될 수 없다.
상수는 코드 내에서 반복적으로 사용되는 값이 있을 경우에 유용하다.
코드 내에서 반복적으로 사용되는 특정 값을 매번 사용하는 것보다, 그 값을 상수에 할당한 다음 코드 내에서 참조하면 코드 읽기가 더 쉬워진다.
변수나 상수명은 영문자, 숫자, 유니코드도 가능하다.
상수와 변수 선언하기
변수는 var 키워드를 이용하여 선언되며, 변수를 생성할 때에 값을 가지고 초기화할 수도 있다.
상수는 let 키워드를 사용하여 선언한다. (선언하는 시점에서 상수에 값이 할당되어 초기화되고, 할당된 값을 수정할 수 없다.)
애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수(var)보다는 상수(let)를 사용하라고 권장한다.
타입 어노테이션과 타입 추론
Swift는 타입 안전(type safe) 프로그래밍 언어이다.
변수의 데이터 타입이 식별되면 그 변수는 다른 타입의 데이터를 저장하는 데 사용될 수 없다.
변수가 선언된 후에도 다른 데이터 타입을 저장할 수 있는 느슨한 타입(loosely typed)의 언어와 대조적이다.
상수와 변수의 타입을 식별하는 방법은 두 가지다.
첫 번째 방법은 변수 또는 상수가 코드 내에서 선언되는 시점에 타입 어노테이션(type annotation)을 사용하는 것이다.
두 번째는 선언부에 타입 어노테이션이 없으면 스위프트 컴파일러는 상수 또는 변수의 타입을 식별하기 위하여 타입 추론(type inference)을 사용한다.
- var userCount : Int = 10 // : Int 가 타입 어노테이션이다.
상수를 선언할 때도 타입 어노테이션을 사용하면 나중에 코드에서 값을 할당할 수 있다. 상수에는 값을 한 번만 할당할 수 있으며, 이미 값이 할당된 상수에 다시 값을 할당하려고 시도한다면 구문 에러(syntax error)가 발생한다.
튜플(Tuple)
튜플은 스위프트 프로그래밍 언어에서 가장 강력한 기능 중 하나이다.
튜플은 여러 값을 하나의 개체에 일시적으로 묶는 방법이다.
튜플에 저장되는 항목들은 어떠한 타입도 될 수 있으며, 저장된 값들이 모두 동일한 타입이어야 한다는 제약도 없다.
ex) let myTuple = (11, 12.9, "Hello")
튜플의 요소들은 여러 다른 방법들을 사용하여 접근할 수 있다.
특정 튜플 값은 인덱스 위치를 참조하면 간단하게 접근이 가능하다.
단 한 줄의 코드로 튜플의 모든 값을 추출하여 변수 또는 상수에 할당
ex) let myTuple = (11, 12.9, "Hello")
let (myInt, myFloat, ,myString) = my Tuple
튜플의 값을 선택적으로 추출하는 데 사용될 수 있으며, 무시하고 싶은 값에 밑줄을 사용하면 그 값은 무시가 된다.
ex) var(myInt, _, myString) = myTuple //부동 소수점 수는 무시
튜플을 생성할 때 각 값에 이름을 할당할 수도 있다.
ex) let myTuple = (count: 11, length: 12.9, message: "Hello")
튜플에 저장된 값에 할당된 이름은 각 값을 참조하는 데 사용한다.
튜플의 가장 큰 장점은 함수에서 여러 값들을 한 번에 반환하는 것이다.
*void는 빈 튜플
감사합니다.
잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!
궁금하신 부분은 댓글로 질문 부탁드립니다!
'Apple > Swift' 카테고리의 다른 글
[Swift] computed property, stored property, self, overloading (0) | 2023.02.01 |
---|---|
[Swift] 클래스, 객체, 인스턴스 (0) | 2023.01.31 |
[Swift] 함수와 메서드 (0) | 2023.01.26 |
[Swift] 연산자와 제어문 (0) | 2023.01.25 |
[Swift] 옵셔널의 개념과 강제 언래핑 (0) | 2023.01.19 |