swift 기본문법 - Any, AnyObject, nil

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
인프런, 야곰의 스위프트 기본문법 강좌를 듣고 정리하였습니다.


기본 데이터타입은 아니지만, 데이터 타입의 위치에서 편한 역할을 수행하는 Any, AnyObject, nil

Any

swift에서 모든 타입을 지칭하는 키워드
데이터 타입 위치에 들어올 수 있고, 모든 타입을 수용할 수 있다. 어떤 타입의 데이터도 다 들어오는 것이 가능하다.

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

let someDouble: Double = someAny

그러나 Any타입은 Double에 할당할 수 없다.

AnyObject

모든 클래스 타입을 지칭하는 프로토콜 > 클래스 인스턴스만을 취급

class SomeClass = {}
var someAnyObject: AnyObject = SomeClass()

nil

없음을 의미하는 키워드

어떤 데이터타입이든 들어올 수 있지만 nil은 들어갈 수 없다.
nil은 NULL과 유사한 표현으로 보면 된다.

nil이 필요한 순간은 옵셔널에서 볼 수 있다.

swift 기본문법 - 기본 데이터타입

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
인프런, 야곰의 스위프트 기본문법 강좌를 듣고 정리하였습니다.


기본 데이터타입

Bool, Int, UInt, Float, Double, Character, String

Bool

var someBool: Bool = true

Int

64비트 정수형 타입 > 양수, 음수, 0 포함

var someInt: Int = 100

UInt

부호가 없는 정수 > 양의 정수

var someUInt: UInt = 100

Float

32비트 부동소수형 타입

var someFloat: Float = 3.14

Double

64비트 부동소수형 타입

var someDouble: Double = 3.14

Character

한글자 문자를 표현하기 위한 타입 > 유니코드를 사용

var someCharacter: Character = "👻"

String

var someString: String = "하하하 👻"
someString = someString + "웃으면 복이와요!!!"

아스키코드와 유니코드(ASCII, Unicode)

|

개인적인 연습 내용을 정리한 글입니다.
잘못된 내용이 있다면 편하게 댓글 남겨주세요!


들어가기에 앞서…

  • 컴퓨터의 기본 저장 단위는 바이트(byte)이다.
  • 1바이트는 8비트(bit)이다.
  • 1바이트에는 2의 8승에 해당하는 256개의 고유한 값을 저장할 수 있다.
  • 문자나 기호들의 집합을 컴퓨터에 저장하거나, 통신 목적으로 사용할 경우에는 부호로 바꿔야한다.
    • 이를 ‘문자인코딩(encoding)’ 또는 ‘부호화’ 라고 하며 부호화된 문자를 복원하는 것을 ‘복호화’ 라고 한다.
  • 모스부호도 일종의 문자 인코딩이다.

아스키(ASCII) American Standard Code for Information Interchange

아스키코드는 7비트, 증 128개의 고유한 값만 사용한다.

7비트만 활용하는 이유는 1비트를 통신 에러 검출을 위해 사용하기 때문이라고 한다. » Parity Bit

위 이미지를 통해 0~127까지 각각 고유한 값이 할당되어 있는 것을 알 수 있다.

  • 0~32: 인쇄와 전송 제어용으로 사용됨
  • 33~126: 숫자, 알파벳 대/소문자, 특수기호 등이 할당

이렇게 0~127까지 총 128개의 고유값을 저장하고 있다.

이는 영문 키보드로 입력할 수 있는 모든 가능성을 다 담고 있지만, 이 외의 다른 언어를 표현하기에는 7비트로는 부족하다는 것을 알 수 있다.

그래서 이를 보완하기 위해 용량을 더 크게 확장한 유니코드가 등장하게 되었다.

유니코드(Unicode)

한글은 자음과 모음의 조합 가능 개수만 따져도 128개는 가뿐히 넘는다.

즉, 아스키 코드의 한계를 극복하기 위해 유니코드가 등장하게 되었다.

swift 기본문법 - 상수와 변수

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
인프런, 야곰의 스위프트 기본문법 강좌를 듣고 정리하였습니다.


상수와 변수

swift는 함수형 프로그래밍 패러다임을 지향하기에 불변 객체를 굉장히 중요시함으로 상수 표현이 많이 등장하게 된다.

  • 상수 선언 키워드: let
    • 상수의 선언/ let 이름: 타입 = 값
  • 변수 선언 키워드: var
    • 변수의 선언/ var 이름: 타입 = 값

swift는 띄어쓰기에 굉장히 민감한 언어로 이를 잘못 쓰게되면 오류/컴파일에 문제가 생길 수 있다.
뿐만 아니라 값의 타입이 명확하다면 타입은 생략이 가능하다.

  • let 이름 = 값
  • var 이름 = 값

상수(let)으로 값을 지정해주고 나면 차후에 다른 값으로 변경이 불가능하다. 반면 변수(var)는 차후에 다른 값을 할당해줄 수 있다.

var variable : String = "차후에 변경이 가능한 var"
let constant : String = "차후에 변경이 불가능한 let"

variable = "변수는 이렇게 차후에 다른값을 할당할 수 있습니다."
constant = "상수는 차후에 값을 변경할 수 없습니다."
constant에는 값을 새로 할당할 수 없으니 let을 var로 변경하라.

상수와 변수 선언 후 나중에 값 할당하기

나중에 할당하려고 하는 상수나 변수는 우선적으로 타입은 미리(반드시) 명시해주어야 한다.

let sum: Int  // 타입만 먼저 선언해놓은 상수
let inputA = 10
let inputB = 20

sum = inputA + inputB  // 상수 선언 후 첫 할당

상수는 선언 후 처음으로 한번만 할당해줄 수 있으며 할당 이후에는 그 값을 절대 바꿀 수 없다.
변수또한 선언을 미리 할 수 있으며 상수와 다르게 할당 이후에도 그 값을 바꾸는 것이 가능하다.

var nickname : String

nickname = "zehye"
nickname = "jihye"

그리고 이러한 상수와 변수 모두 할당되기 전에 사용하고자 한다면 컴파일러가 오류를 띄워준다.

초기화 되기 이전에 사용이 되었다.

swift 기본문법 - 이름짓기, 콘솔로그, 문자열 보간법

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
인프런, 야곰의 스위프트 기본문법 강좌를 듣고 정리하였습니다.


이름짓기 규칙

  • Lower Camel Case: function, method, variable, constant > someVariableName..
  • Upper Camel Case: type(class, struct, enum, extension) > Person, Point, Week..

콘솔로그

  • print: 단순 문자열 출력
  • dump: 인스턴스의 자세한 설명(description 프로퍼티)까지 설명

문자열 보간법(String Interpolation)

프로그램 실행 중 문자열 내에 변수 또는 상수의 실질적인 값을 표현하기 위해 사용 > \()

import Swift
let age: Int = 10

"안녕하세요! 저는 \(age)살 입니다."  // "안녕하세요! 저는 10살 입니다."
"안녕하세요! 저는 \(age+5)살 입니다."  // "안녕하세요! 저는 15살 입니다."

print("안녕하세요! 저는 \(age)살 입니다.")
>>> 안녕하세요! 저는 10살입니다
class Person {
  var name: String = "zehye"
  var age: Int = 26
}

let zehye: Person = Person()
print(zehye)
dump(zehye)
>>> Person 클래스 주소  // print의 결과값
>>> Person 클래스 주소  // dump의 결과값
>>> zehye
>>> 26