Swift/Swift 언어이해

Swift 기본문법 공부

Teol 2023. 4. 28. 23:04

 

조건문 if문, 삼항연산자, 선언문, 출력문print

import UIKit

//var isDarkMode : Bool = false
//
//if (isDarkMode == true){
//    print("다크모드 입니다.")
//}
//else {
//    print("다크모드 아닙니다.")
//}
//
//var title : String = isDarkMode == true ? "다크모드 입니다." : "다크모드 아닙니다."
//
//
//print("title: \(title)")


var EatLunch : Bool = true

    if(EatLunch == true)
        {
            print("점심을 먹었습니다.")
        }

    else{
            print("점심을 먹지 않았습니다.")
        }

var Full : String = EatLunch == true ? "점심을 먹었습니다." : "점심을 먹지 않았습니다."

print("\(Full)")

 

조건문 if문, 삼항연산자, 선언문, 출력문print를 배웠다. 

3번째 줄부터  var은 자료형인지 알았는데 뒤에 : 이후 Bool을 쓰는 것 보니 자료형은 아니고 그와 비슷한걸로 보인다, 아마  내가 배웠던 c#에서 처럼 객체지향의 pulic, private과 같은 것 일지도 모른다, 일단 쭉 배우면서 전체적인 흐름을 익히고 딥하게 들어가 봐야할 것 같다.

기본적인 선언법은 "var 변수명 : 자료형 = 값" 으로 알고있으면 될 것 같다.

if문 선언법은 다른 언어와 같아서 쉽게 익혔다.

삼항연산자의 경우 c언어와 비슷해서 쉬웠다, 다만 앞에 선언 방식만 주의해주면 쉽게 익혀질거같다.

프린트 출력문에서는 \()와 같은 새로운 형식을 오늘 배웠는데 c언어의 ", 변수명" 과 비슷하다고 생각하니 이해하기 쉬웠다.

printf("짝수 : %d", &Number);

아래는 배운내용을 혼자 복습해 보았다.

선언문만 익숙해지면 될거같다.

 

 

+ 확실히 다른 언어를 배우고 배우기에 습득속도가 쉬웠다.

+ 우선 먼저 대략적인 틀을 배우고 깊게 들어가보자.

 

------------------------------------------------------------------------------------------------------------------

 

- 배열과 foreach 반복문

import UIKit

//var myArray : [Int] = [0,1,2,3,4,5,6,7,8,9,10]
//
//for item in myArray{
//    print("item: \(item)")
//}
//
//for item in myArray where item % 2 == 0 {
//    print("짝수: \(item)")
//}

var Number : [Int] = [0,1,2,3,4,5,6]

for EvenNum in Number where EvenNum % 2 == 0 {
    if(EvenNum != 0){
        print("EvenNum: \(EvenNum)")
    }
    else{}
}

for OddNum in Number where OddNum % 2 != 0 {
    print("OddNum: \(OddNum)")
}

배열과 foreach 반복문을 배웠다.

배열 선언시 자료형에 "[]"를 표시해주는 것이 특이사항이었다 [자료형] = [배열안에 들어갈것들] 이런식으로 형식을 맞춘다는 것으로 생각하면 익숙해졌다.

이것저것 시험해보다 알게되었는데 자료형이 전부 첫번째 문자는 대문자로 되어있길래 소문자도 되나 싶어 넣었더니 오류가 났다.

자료형에 첫번째 문자는 대문자를 써서 구분해줘야한다.

foreach문 선언 시 조건절을 써 줄 수 있었는데, "where(조건절)" 이런식으로 사용하면 됀다.

시험 삼아 짝수와 홀수를 출력하고싶어서 전 시간 배운 if문과 지금 배운 foreach문을 사용하여 짝수를 출력했다.

굳이 if문을 쓴 이유는 짝수를 출력하고 싶은데 0이 출력되길래 사용했다.

 

 

----------------------------------------------------------------------------------------------------------------

 

- 분기문  enum case ,함수 func으로 반환값 받고 호출

import UIKit

enum School {
    case elementary
    case middle
    case high
//case elementary, middle, high
}
//var은 무엇인가?, var과 let의 차이점, 출력문 사용법2
let yourSchool = School.high
print("yourSchool: \(yourSchool)")
print("yourSchool:",yourSchool)//넣을 값이 한가지라면 가능

enum Grade : Int {
    case first = 1
    case second = 2
}

let yourGrade = Grade.second.rawValue//원시값 가져오기
print("yourGrade : \(yourGrade)")


enum SchoolDetail {
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
    
    func getName() -> String {//함수 선언 -> String은 반환값으로 문자열 반환
        switch self {//switch분기문 인데 self 키워드로 자기자신(SchoolDetail)으로 swich문을 나누겠다.
        case .elementary(let name)://반환 받는값인 "정대리중학교" 을 let name으로 받아서 return 하겠다.
            return name
        case let .middle(name)://이렇게도 쓸 수 있음
            return name
        case .high(let name):
            return name
        }
    }
}

let yourMiddleSchoolName = SchoolDetail.middle(name: "정대리중학교") //ScoolDetail에 있는 middle에 값을 넣어줌(반환)

print("yourMiddleSchoolName: \(yourMiddleSchoolName)")

분기문  enum case ,함수 func으로 반환값 받고 호출하기

이번에 배운것은 내가 다른 언어를 먼저 배우지 않았으면 어려웠을 것이다.

enum ease로 분기문 사용법을 배웠고 어려움은 없었다.

궁금했던 점인 var에 대해서 배웠는데 정체는 var변하는것의 줄임말이었고 값을 계속 수정할 수 있는 상태이다.

let은 반대로 값을 수정할수없는, 상수형태로 고정시켜놓는 것이라 보면된다.

또한 enum으로 나눈 분기문 안의 값을 Grade.second.rawValue 으로 원시값을 꺼내올수 있다.

프린트문에서 한 가지 더 배웠는데, c언어처럼 ",자료형"으로 값을 출력할수 있었다 단 넣을 값이 한가지라면 가능하다.

enum에도 자료형을 설정할 수 있다.

enum안 원시값을 넣는 방법이 있다  let 변수명 = 분기문이름.케이스이름(name: "넣을 값")으로 값을 넣어주었다.

case 로 나눈 분기의 이름 안의 값을 넣을 수 있었다 이건 함수를 사용해서 선언한 다음 String으로 반환하여 enum문 안의 func함수 안 switch문을 self키워드로 자기자신으로 switch문을 나누겠다 라는 의미로  선언한다음 반환값을 let name으로 받아서 다시 return하는 방식으로 배웠다.

 

 

----------------------------------------------------------------------------------------------------------------

for 반복문사용, 레인지

import UIKit

//레인지 0...5는 0,1,2,3,4,5 를 뜻하는 것이다.
//응용으로 0..<5는 0,1,2,3,4 를 뜻한다.

for index in 0...5 where index % 2 == 0 {
    print("호호 index: \(index)")
}

var randomInts:[Int] = []//빈 배열 선언

for _ in 0..<25{//'_'의미 요소에 대한 변수를 쓰지 않겠다.
    let randomNumber = Int.random(in: 0...100)
    randomInts.append(randomNumber)
}

 

for 반복문사용, 레인지 간단하게 배웠다.

레인지는 0...5로 사용하고 간단한 조건으로 0..<5 라고 쓰면0~5를 뜻하는 것이다.

여기서 주의할것이 c언어의 배열과 헷갈려서 0~4라고 생각하지 않는 것이 좋을 것 같다.

for문도 마찬가지로 where절을 이용해서 조건을 맞춰줄 수 있다.

배열도 간단하게 배웠는데 var 변수명:[자료형] =[]으로 선언하는 것이다.([Int]=[Int]()로도 사용가능)

'_'를 사용해보았는데 의미는 요소에 대한 변수를 사용하지 않겠다는 의미다. 이걸 어디에 사용할지는 아직 의문이다.

마지막 for문에서 랜덤숫자를 불러와서 randomNumber에 저장한뒤 그것을 다시  randomInts.append(randomNumber)로 불러왔다. 프린트로 찍어보면 랜덤값이 들어온다.

 

 

'Swift > Swift 언어이해' 카테고리의 다른 글

swift mutating func 키워드란?  (1) 2023.12.02
for ~ in과 for each의 차이  (0) 2023.11.04
class와 struct의 차이  (0) 2023.10.31
프로퍼티 옵저버란?  (0) 2023.10.30
Swift 모든 문법 정리  (1) 2023.10.21