본문 바로가기

Swift

Swift 기초 문법 / 변수 , 상수 , 기초 데이터 타입

이름 짓기 규칙

이름은 유니코드에서 지원하는 어떤 문자(한글, 한자, 영문, 숫자, 이모티콘 등등)라도 사용이 가능하나 아래와 같은 예외의 경우는 사용이 불가능 함

  • 스위프트에서 미리 사용하고 있는 예약어 또는 키워드 (스위프트의 키워드는 대부분 예약어)
  • 해당 코드 범위 내에서 이미 사용하고 있는 기존의 이름과 동일한 이름
  • 연산자로사용될수있는기호(+, -, *, /)
  • 숫자로 시작하는 이름
  • 공백이 포함된 이름

함수,메서드,인스턴스는 첫 글자를 소문자로 사용하는 소문자 카멜 케이스(Lower Camel Case)

클래스,구조체,익스텐션,프로토콜,열거형은 타입의 이름이기 때문에 첫글자를 대문자로 사용하는 대문자 카멜 케이스(Upper Camel Case)

또한 대▪소문자를 구별합니다  ex)Varvar을 다르게 인식함
세미 콜론(;)은 선택 사항입니다.


변수와 상수

변수

스위프트에서 변수를 생성하려면 var 키워드를 사용합니다.

var [변수명]: [데이터 타입] = [값] 의 형태로 선언함

변수를 생성할 때 데이터 타입은 생략 가능하며 (타입 추론)
큰따옴표("")로 묶인 데이터는 문자열을 의미합니다.

var name: String = "seok"
var age: Int = 100
var job = "iOS Programmer" // 타입 추론이 사용되었습니다
var height = 181.5 // 타입 추론이 사용되었습니다

age = 99        // 변수는 값을 변경해 줄 수 있습니다.
job = "Writer"  // 값을 변경할 때에는 기존과 동일한 타입의 값을 할당해 주어야 합니다.

타입 추론은 변수나 상수를 생성할때 데이터 타입을 생략시 컴파일러가 변수 값의 타입을 추론하여 타입을 지정하게 되는데, 스위프트에 익숙하지 않은 프로그래머에게는 독이 될 수 있음.
잘못된 타입 추론으로 인해 오류가 생기면 이 오류를 찾는데 상당한 시간이 걸리게 되기 때문에, 처음부터 타입을 명시하는 것이 시간을 절약하는 방법이 될 수 있다.

상수

스위프트에서는 let 키워드를 사용해서 상수를 생성합니다.
let [상수명]: [데이터 타입] = [값] 의 형태로 선언함

변수 생성과 마찬가지로 상수 생성 때도 데이터 타입을 생략할 수 있습니다.

let name: String = "seok" // 차후 변경하지 않는 값은 상수로 선언합니다.
var age: Int = 100
var job = "iOS Programmer"  // 타입 추론이 사용되었습니다.
let constHeight = 181.5

age = 99        // 변수는 값을 변경할 수 있습니다.
job = "Writer"  // 값을 변경할 때에는 기존과 동일한 타입의 값을 할당해야 합니다.
name = "James"    // 상수로 선언된 값은 변경할 수 없습니다. 오류가 발생합니다.

콘솔 로그

print( ) 함수를 사용하여 콘솔 로그를 출력할 수 있으며, 로그 출력한 뒤에 줄바꿈 문자(\n)을 자동으로 삽입해줍니다.

문자열 보간법 : 변수 또는 상수 등의 값을 문자열 내에 나타내고 싶을때 사용

//문자열 보간법
let name: String = "seok"
print("My name is \(name)") // My name is seok

기본 데이터 타입

스위프트에서 기본으로 제공하는 데이터 타입(자료형)

IntUInt

정수 타입이며 Int는 +,- 부호를 포함한 정수를 뜻하며, 이중 음수를 제외한 0을 포함한 양의 정수는 UInt로 표현
최댓값과 최솟값은 각각 maxmin 프로퍼티로 알아볼 수 있습니다

var integer: Int = -100
let unsignedInteger: UInt = 50 // UInt 타입에는 음수 값을 할당할 수 없습니다.
print("integer 값 : \(integer), unsignedInteger 값 : \(unsignedInteger)")
print("Int 최댓값 : \(Int.max), Int 최솟값 : \(Int.min)")
print("UInt 최댓값 : \(UInt.max), UInt 최솟값 : \(UInt.min)")

let largeInteger: Int64 = Int64.max
let smallUnsignedInteger: UInt8 = UInt8.max
print("Int64 최댓값 : \(largeInteger), UInt8 최댓값 : \(smallUnsignedInteger)")

let tooLarge: Int = Int.max + 1 // Int의 표현 범위를 초과하므로 오류를 냅니다. 
let cannotBeNegetive: UInt = -5 // UInt는 음수가 될 수 없으므로 오류를 냅니다.

integer = unsignedInteger // 오류! 스위프트에서 Int와 UInt는 다른 타입입니다. 
integer = Int(unsignedInteger) // Int 타입의 값으로 할당해주어야 합니다.

Bool

불리언 타입으로 참(true) 또는 거짓(false)만 값으로 사용 가능

let boolean: Bool = true
let iLoveYou: Bool = true
let sunRiseWest: Bool = false
print("해는 서쪽에서 뜹니까? : \(sunRiseWest)")  //실행 결과 => 해는 서쪽에서 뜹니까 ? : false

FloatDouble

Float와 Double은 부동소수점을 사용하는 실수형, 부동소수 타입이라고 합니다.
스위프트에는 64비트의 부동 소수 표현을 하는 Double(최소 15자리의 십진수 표현가능) 32비트의 부동 소수 표현을 하는 Float(최대 6자리의 숫자까지만 표현가능)가 있으며
어떤것을 사용해야하는지 혼란스러운 경우 Double 사용을 권장합니다.

var floatValue: Float = 1234567890.1 
// Float이 수용할 수 있는 범위를 넘어섭니다. 
// 자신이 감당할 수 있는 만큼만 남기므로 정확도가 떨어집니다.

let doubleValue: Double = 1234567890.1 // Double은 충분히 수용할 수 있습니다. 

floatValue = 123456.1 // Float이 수용할 수 있는 범위의 수로 변경합니다.

 

Character

단 하나의 문자를 표현하는 자료형, 스위프트는 유니코드 문자를 사용하므로 영어는 물론, 유니코드에서 지원하는 모든 언어 및 특수 기호 등을 사용할 수 있습니다.
값의 앞뒤에 큰따옴표(" ")를 사용하여 표현합니다.

let alphabetA: Character = "A"
print(alphabetA)

let commandCharacter: Character = "♡"
// Character 값에 유니코드 문자를 사용할 수 있습니다.
print(commandCharacter)

let 한글변수이름: Character = "ᄀ"
// 한글도 유니코드 문자에 속해 있으므로 스위프트 코드에 변수 이름으로 사용할 수 있습니다. 

print("한글의 첫 자음 : \(한글변수이름)") // 실행 결과 => 한글의 첫 자음 : ㄱ

 

String

String은 문자열로 Character와 마찬가지로 유니코드를 사용할 수 있으며, 값의 앞 뒤에 큰 따옴표 (" ")를 사용하여 표현합니다.

let name: String = "seok" // 상수로 선언된 문자열은 변경이 불가능합니다.

// 이니셜라이저를 사용하여 빈 문자열을 생성할 수 있습니다.
// var 키워드를 사용하여 변수를 생성하였으므로 문자열의 수정 및 변경이 가능합니다.
var introduce: String = String()

introduce.append("제 이름은")
// append() 메서드를 사용하여 문자열을 이어붙일 수 있습니다.

introduce = introduce + " " + name + 입니다.
// + 연산자를 통해서도 문자열을 이어붙일 수 있습니다.

print(introduce)  //실행 결과 => 제 이름은 seok입니다.

 

Any

Any는 Swift의 모든 타입을 지칭하는 키워드입니다.

var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다"
someAny = 123.12

//Any타입에 Double 타입이 아니기 때문에 할당할 수 없음. 
//명시적으로 타입 변환이 필요함
let someDouble: Double = someAny  // 컴파일 오류발생

AnyObject

AnyObject는 모든 클래스 타입을 지칭하는 프로토콜입니다.

class SomeClass {}

var someAnyObject: AnyObject = SomeClass()

//AnyObject는 클래스의 인스턴스만 수용 가능 , 클래스의 인스턴스가 아니면 할당할 수 없습니다
someAnyObject = 123.12    // 컴파일 오류발생

nil

nil은 없음을 의미하는 키워드입니다.
다른 언어의 NULL , Null, null 등과 유사한 표현

var someAny : Any = nil         // 컴파일 오류발생
var someAnyObject : AnyObject = nil   // 컴파일 오류발생

'Swift' 카테고리의 다른 글

Swift 기초 문법 / 컬렉션 타입  (0) 2021.06.05
Swift 개념  (0) 2021.05.31