학습 기록/swift

Hello World + Variables

romi__ 2024. 11. 18. 22:17

/C

 

국룰 Hello, World를 Xcode를 통해 출력해 보았다.

 

Variables를 선언하는 방법에는 크게 두 가지가 있다. var를 사용하기, let을 사용하기. let은 재할당이 불가한 반면 var는 가능하다. 위의 예시에서는 let으로 선언한 변수 myName에 새로운 값을 할당하자 콘솔창이 에러를 띄우는 것을 볼 수 있다.

 

반면 var로 할당한 배열인 Names에는 append를 통해 요소를 추가하더라도 에러가 나지 않는다.

 

let으로 할당한 변수를 var로 할당한 변수에 넣어주면, simply copying 하는 것이지 Reference로 가져오는 것이 아니다. 그렇게 할당한 var 변수 foo2에 변화를 주더라도 let변수인 foo는 변화하지 않는다.

 

moreNames라는 배열을 let을 통해 만들었다. 마찬가지로 copy라는 변수를 통해 moreNames를 복사하고, 해당 배열에 요소를 추가하더라도 moreNames는 변화하지 않는다.

 

다만 NSMutableArray인 oldArray의 경우 Let으로 선언하였음에도 불구하고 변화가 가능한 것을 확인할 수 있다. 이는 해당 배열이 structure가 아니라 class로 구분되기 때문이다. 또한, 이렇게 해서 만든 배열을 newArray에 var로 할당하고, newArray에 요소를 추가하면 oldArray 또한 영향을 받는 모습을 볼 수 있다.

 

실습에 사용한 예제 코드는 아래와 같다.

import Foundation

let myName = "Romi"
var yourName = "Kuromi"

var names = [
    myName,
    yourName
]
names.append("Olivia")
names.append("Rodrigo")

let foo = "Foo"
var foo2 = foo //simply copying foo
foo2 = "Foo 2"
foo
foo2

let moreNames = [
    "Foo",
    "Bar"
]
var copy = moreNames
copy.append("Baz") //adding Baz to copy did not change the values of moreNames
moreNames
copy

let oldArray = NSMutableArray( //class, not sturcture -> mutable=can be changed.. even if it's assigned by let
    array: [
        "Foo",
        "Bar"
    ]
)
oldArray.add("Baz")
var newArray = oldArray
newArray.add("Qux")
oldArray //oldArray도 영향을 받음
newArray
//따라서 Mutable을 다룰땐 주의... those functions can be changed

let someNames = NSMutableArray(
    array: [
        "Foo",
        "Bar"
    ]
)
func changeTheArray(_ array: NSArray) {
    let copy = array as! NSMutableArray
    copy.add("Baz")
}
changeTheArray(someNames)
someNames //internally mutated

 

 

 

내일은 NSArray와 NSMutableArray에 대해 알아보기!

'학습 기록 > swift' 카테고리의 다른 글

Operators  (0) 2024.11.20
NSArray, NSMutableArray  (0) 2024.11.19
Xcode 설치하기  (0) 2024.11.17
앞으로는  (2) 2024.11.16
날짜 플래너: 앱 데이터 지속화하기  (0) 2024.10.27