국비지원학원이 끝났다.
유니티만 계속 파기에는 너무 좁은 선택인 듯 하여 평소에 관심있던 Swift를
남은 방학동안 공부하려고 한다.
사실은 원래 2021년경에 동아리에서 짧게 스터디를 했었으나,
지금은 다 까먹어서, 다시 진지하게 공부해보려고 한다.
<개발하는 정대리 스위프트 기초 문법>
var 변수이름 : 변수타입
var a : Bool
if (a == true){
print("a is true")
} else {
print("a is false")
}
if a == true{}
var title : String = isDarkMode ? "다크모드 입니다" : "다크모드아님"
print("title : \(title)")
print("title", title)
var myArray : [Int] = [1, 2, 3]
for item in myArray{
print(item:\(item))
}
for item in myArray where item > 5
(생략)
for item in myArray where item % 2 == 0
(생략)
enum School{
case elementary, middle, high
//case middle
//case high 로 나눠써도 ok
}
let yourSchool = School.elemantary
enum Grade : Int{
case first = 1
case second = 2
}
let yourGrade = Grade.second.rawValue
print("yourGrade : \(yourGrade)")
.rawValue
enum SchoolDetail{
case elemantary(name : String)
case middle(name : String)
case high(name : String)
}
let yourMiddleSchoolName = SchooDetail.middle(name : "중학교")
enum Sample{
case elemantary(name : String)
func getName() -> String{
switch self{
//let 위치
case .elemantary(let name):
return name
case let .middle(name):
return name
case let .high(name):
return name
}
}
}
(n...m => m포함)
(n..<m => m제외)
for i in 0...5 {}
for i in 0..<5 where i % 2 == 0 {}
for _ in 0..<25 {}
Int.random(in: 0...100)
var randomInts: [Int] = [Int]()
var randomInts: [Int] = []
randomInts.append(randomNumber)
var someVariable : Int? = nil
if someVariable == nil { someVariable = 90 }
if let otherVariable = someVariable {}
let myValue = someVariable ?? 10
func unwrap(parameter: Int?){
print("unwrap() called")
//값이 없으면 리턴
guard let unWrappedParam = parameter else{
return
}
print("unWrappedParam: \(unWrappedParam)")
func unwrap(parameter : Int?)
-> 사용할 때 unwrap(parameter : firstValue)
같이 parameter : 를 써야함
func unwrap(_ parameter : Int?)
-> 사용할 때 unwrap(firstValue)
같이 생략 가능
struct YoutuberStruct{
var name : String
var subscribersCount: Int
}
var devJeong = YoutuberSturct(name: "정대리", subscribersCount: 99999)
var devJeongClone = devJeong
devJeongClone.name = "호롤롤로"
//Call by value
//정대리
print("devJeong.name : \(devJeong.name)")
class YoutuberClass{
var name : String
var subscribersCount: Int
//생성자, 메모리에 올리기
init(_ name : String, subscribersCount : Int){
/self == this
self.name = name
self.subscribersCount = subscribersCount
}
}
var devJeong = YoutuberClass(name: "정대리", subscribersCount: 99999)
var devJeongClone = devJeong
devJeongClone.name = "호롤롤로"
//Call by reference
//호롤롤로
print("devJeong.name : \(devJeong.name)")
var myAge = 0{
willSet{
print("값이 설정될 예정이다. myAge: \(myAge)")
}
didSet{
print("값이 설정되었다. myAge: \(myAge)")
}
}
myAge = 10
myAge = 20
값이 설정될 예정이다. myAge: 0
값이 설정되었다. myAge: 10
값이 설정될 예정이다. myAge: 10
값이 설정되었다. myAge: 20
func myFunction(name: String) -> String{}
=> myFunction(name: "정대리")
func myFunctionSecond(다른이름 name: String) -> String{}
=> myFunction(다른이름 : "정대리")
func myFunctionThird(_ name: String) -> String{}
=> myFunctionThird("정대리")
그냥 일반적인 다른 언어의 제네릭과 동일
class MyArray<T>{
var elements = [T]()
init(_ elements: [T]){
self.elements = elements
}
}
메소드랑 비슷한 느낌
해당 변수를 콜하면 작성해둔 로직 실행
// String을 반환하는 클로저
let myName: String = {
//myName으로 들어간다
return "정대리"
}()
//클로저 정의
//let myRealName = {(name: String) -> String in return ""}과 동일
let myRealName: (String) -> String = { (name: String) -> String in
return "개발하는 \(name)"
}
let myRealNameLogic : (String) -> Void = { (name: String) in
print("개발하는 \(name)")
}