[Swift] Variables & Data Type

비나·2022년 8월 21일

Swift

목록 보기
2/8
post-thumbnail

📌 Variables

✅ var

변수 생성을 위해서는 var 키워드를 사용한다.

import UIKit

var a = "Hello, Playground"
var name = "Vina"

✅ let

상수 생성을 위해서는 let 키워드를 사용한다.

import UIKit

let a = "Hello, Playground"
let name = "Vina"

✅ var vs. let

변수는 말 그대로 변하는 값인 반면,
상수는 변하지 않는 값이다.

📖 상수가 필요한 이유?

  1. 상수가 필요한 가장 큰 이유는 가독성 때문이다.
    상수로 값을 선언하면 주석이나 API 문서를 보지 않고도
    해당 값이 변화가 없다는 사실을 알 수 있다.

  2. 특정 값에 의미를 부여하는 경우 사용할 수 있다.
    ex) 최대크기나 최소크기 등



📌 Data type

변수나 상수를 선언하는 경우,
데이터 타입을 적는다.
위의 예시의 경우 적혀있지 않은데
그 이유는 데이터 타입이 생략이 가능하기 때문이다.
생략하지 않고 표현하면 아래와 같다.

import UIKit

var a : String = "Hello, Playground"
var name: String = "Vina"
var x: Int = 212

✅ 숫자

📖 Int vs. UInt

정수를 선언하는 경우 Int 또는 UInt 타입을 사용한다.

Int : 0,+,-를 포함한 정수 -> 음수값 할당 가능
UInt : -를 포함하지 않고 0을 포함한 양의 정수 -> 음수값 할당 불가능

📖 Bool

true(참) / flase(거짓)만 값으로 갖음
toggle()을 사용하여 참 거짓 반전 가능

✨ toggle()

var boolean: Bool = true
boolean.toggle() // true와 false를 반전

📖 float

32 비트 부동소수 표현

📖 Double

64 비트 부동소수 표현

✨ random(in:)

Swift 4.2 부터 임의의 수를 만드는 random(in:) 메서드가 추가되었다.

UInt.random(in: 1...50)
Int.random(in: -50...50)
Double.random(in: 0.5...5.5)
Float.random(in: -1.5...2.5)

✅ 문자

📖 Character

문자를 선언하는 경우 사용한다.
유니코드에서 지원하는 모든 언어 및 특수기호 등을 사용할 수 있다.
값의 앞 뒤에 큰 따옴표를 사용한다.

📖 String

문자열을 선언하는 경우 사용한다.
Character와 마찬가지로 값의 앞 뒤에 큰 따옴표를 사용한다.
예시는 아래와 같다.

let name: String = "Vina"
var name2: String = "Mei"

빈 문자열을 생성할 경우 이니셜라이저를 사용한다.
빈 문자열에는 append() 메서드 또는 + 연산자를 이용해서 값을 추가할 수 있다.

var hello: String = String()
hello.append("Hello")
hello = hello + ", " + name
print(hello)

📖 String 타입 기능

Swift는 기본적으로 String 타입을 위한 메서드와 프로퍼티들을 다양하게 구현되어 있다.
String 타입의 다양한 기능은 다음과 같다.

  1. 연산자를 이용한 문자열 결합

    import UIKit
    
    let hello: String = "Hello"
    let name: String = "Vina"
    
    var greeting: String = String()
    greeting += hello
    greeting += " "
    greeting += name
    
    print(greeting)
  2. 메서드를 통한 접두어 확인

    import UIKit
    
    let hello: String = "Hello"
    let name: String = "Vina"
    
    var hasPrefix: Bool = false
    hasPrefix = hello.hasPrefix("He")
    print(hasPrefix)    // true 출력
    
    hasPrefix = name.hasPrefix("Ve")
    print(hasPrefix)    // false 출력
  3. 메서드를 통한 접미어 확인

    import UIKit
    
    let hello: String = "Hello"
    let name: String = "Vina"
    
    var hasSuffix: Bool = false
    hasSuffix = hello.hasSuffix("llo")
    print(hasSuffix)    // true 출력
    
    hasSuffix = name.hasSuffix("Ve")
    print(hasSuffix)    // false 출력
  4. 메서드를 통한 대문자 변환

    import UIKit
    
    let hello: String = "Hello"
    let name: String = "Vina"
    
    var convertedString = hello.uppercased()
    print(convertedString)
  5. 메서드를 통한 소문자 변환

import UIKit

let hello: String = "Hello"
let name: String = "Vina"

var convertedString = hello.lowercased()
print(convertedString)
  1. 프로퍼티를 통한 빈 문자열 확인
import UIKit

let hello: String = "Hello"
let name: String = "Vina"

var isEmptyString: Bool = false
isEmptyString = hello.isEmpty
print(isEmptyString)    // false 출력

let hi: String = ""
isEmptyString = hi.isEmpty
print(isEmptyString)    // true 출력
  1. 프로퍼티를 통한 빈 문자열 확인
import UIKit

let hello: String = "Hello"
let name: String = "Vina"

print(hello.count)  // 결과값 : 5
print(name.count)   // 결과값 : 4

📖 문자열 안에 특수문자

특수문자사용
\n줄바꿈 문자
\백슬래시
\"큰따옴표
\t
\0문자열 끝 알림(null 문자)

✅ Any, AnyObject

📖 Any

말 그대로 모든 데이터 타입을 사용할 수 있다.
아래와 같이 처음에는 문자열을 넣고 다음에는 정수나 실수를 넣더라도 상관없다.

import UIKit

var a: Any = "Hello"
a = 100
a = 99.9

📖 AnyObject

클래스의 인스턴스를 할당할 수 있다.
Any 보다는 한정된 의미를 가진다.

=> Any와 AnyObject 모두 예기치 못한 오류의 위험을 증가시키므로 사용하지 않는 편을 권장한다

📖 nil

보통 다른 언어에서는 값이 비어있는 경우 null이라고 표현한다.
처음에 Swift에서 nil을 보고 정말 어색하게 느껴졌다..
암튼 그래서 nil은 비어있는 값을 의미한다.
Optionals(옵셔널)에서 많이 사용한다.



📌 마무리

언어를 시작할때 항상 배우는 Variables와 Data Type에 대하여 정리하여 보았다.
이번에 Swift는 (다른 언어보다는) 정말 꼼꼼히 공부해보자는 생각으로 공부하기로 했다.
그래서 귀찮아도 예전에 처음 프로그래밍 언어를 배우던 마음으로 기초부터 정리를 시작하기로 했다.
이번주 중에 최근 들은 Swift Programming Tutorial for Beginners 강의의 내용 순서로
책으로 공부하면서 정리하는 것을 목표로 하고 있다.
(책을 기준으로 챕터 12까지,,정리,, 근데 못할거같아 넘 많앙)
그리고 다음주부터는 SwiftUI 공부를 병행할 수 있기를 바란다. 💻✨



참고
- 야곰, 『스위프트 프로그래밍 3판』, 한빛미디어, 2021.04
- the swift programming language swift 5.7
- Swift | Apple Developer Documentation
profile
아자아자 코딩라이푸 ٩(๑❛ʚ❛๑)۶

0개의 댓글