본문 바로가기
APP 개발 : 기본문법/SWIFT

스위프트 문법: 변수랑 상수

by FRIGATE 2021. 4. 30.

참고1: wikidocs.net/16044

참고2: blog.naver.com/hong227/222011326496

참고3: jusung.gitbook.io/the-swift-language-guide/language-guide/02-basic-operators

참고4: blog.naver.com/ykycome00/222036709750

 

변수 "var" 값을 수정할 수 있음

상수 "let" 값이 고정임. 수정 불가.

 

name / birthyear 같은 값을 선언할때

1. 변수(var) / 상수(let) 로 선언하고

2. 자료형(type)도 선언해줘야 한다. <-- Type annotation 이라고 함 ㅎㅎ

   Ex. Float(소수형) , Int(정수형), String (문자형)

 

선언은 아래처럼 함.

var name : String = " FLATINA " <- String 형일때만 " " 붙여준다

let birthyear : Int = 1994

var height : Float = 183.7

 

name은 var으로 선언됐으니까 바꿀 수 있다.

name = "YUNA"

 

birthyear은  let으로 선언됐으니까 바꿀 수 없다

birthyear = 2021 // 컴파일 에러!

                      // birthyear는 let으로 선언된 상수니까~

 

값끼리 연산할때

    같은 자료형끼리만 연산이 됌 (사칙연산)

 

birthyear + height // 컴파일 에러!

                        // birthyear : Int 타입이고, height : Float 타입이니까.. 서로 연산 불가능

 

Float (birthyear) + height // 1994 + 183.7 = 2127.7  <-- 컴파일 성공!

                                // Int 타입인 birthyear를  Float 타입으로 변경하면,

                                   height의 자료형과 똑같아지므로, 연산 쌉가능

 

1994년에 태어난 플라티나야 안녕! 을 출력해보자

let name : String = " 플라티나 "

let birthyear : Int = 1994

 

String (birthyear) + "년에 태어난" + name + "야 안녕!" // 1994년에 태어난 플라티나야 안녕! <-- 컴파일 성공!

                                                            // "년에 태어난" + name + "야 안녕!" <-- 얘네가 String 타입이니까,

                                                                                                      birthyear를 String 타입으로 변경해줬다

 

타입 추론 (Type Inference)

    뒤에  : 자료형 을 생략해줘도  name, birthyear 를 정의할 수 있다.

var name = " 플라티나 "

let birthyear = 1994

 

배열과 딕셔너리

    Swift 에는 배열이랑 리스트랑 구분 안됌~

   가변형 배열과 불변형 배열만 있을 뿐...

 

배열 (Array) 자료형 선언시, [자료형 이름] = [ 엘리먼츠들...] 이렇게 나타낸다.

 

let a: [Any] = [1,1.0,-1,"하이","A",true]

let b: [Bool] = [true,galase, true, true, false]

let c: [Character] = ["a","b","c"]  <-- 단일문자 자료형

 

var s: [String] = ["안녕하세요","내이름은","FLATINA","라고한다."] <--문자열 자료형

var d: [Double] = [1.0 ,2.0, 3.3,4.4] <-- 실수형 (나타낼때 소숫점 15번째에서 반올림함)

var f : [Float] = [1.1,1.2,1.3] <-- 실수형 (소숫점 6번째자리에서 반올림 함)

var i : [Int] = [1,2,3,4] <-- 정수형

 

배열을 배열할때

let a : [[Int]] = [[1,2,3],[4,5,6],[7,8,9]]

print(a[1][1]) // 출력결과: 5

 

배열의 초기값과 크기를 지정해서 선언할 수 있다.

let intArr = [Int](repeating: 0, count: 5)

 

비어있는 배열 선언하는법

var intArr = Array<Int>( )

var strArr = [String]( )

var FloArr = [[Character]]( )

var boolArr = Array<[Bool]>( )

 

◆ 기본 연산자

 

스위프트에서는 아래 3개 연산자를 지원한다

산술 연산자 " + - / % "

논리 연산자 " && || "

범위 연산자 " a..<b , a...b "

 

스위프트에는 단항, 이항, 삼항 연산자가 있다.

단항 연산자 : " -a !b c! " 처럼  대상 앞뒤에 붙여서 쓰는 연산자

이항 연산자: " 2+3 " 처럼 두 대상사이에 위치하는 연산자

삼항 연산자: " a ? b : c " 처럼 딱 한개 존재하는 연산자

 

할당 연산자 " = " : 값을 초기화하거나 변경시킴. 상수랑 변수 모두 사용가능~

할당 연산자는 "=" 이거다.  이걸 써서 값을 할당하는 것이다.

let b = 10

var a = 5

a = b

// a 값은 10  (a는 변수니까 a가 변해야지 ㅋ)

 

튜플을 이용해서 여러값을 한번에 할당 가능함.

let (x,y) = (1,2)

// x 는 1, y 는 2

 

C, Object-C 랑 다르게 Swift는 할당 연산자에서 값을 반환하지 않음 <- 먼뜻이지?

왜냐면 동등비교연산자 "==" 를 써야하는 자리에 할당연산자 "="가 들어가면 실수가 되기 때문~

if x = y { }    //  = 대신 == 이거 써야함!!

// 오류!  x = y 는 값을 반환하지 않기 때문에, 이건 이상한 문법임

 

 

사칙 연산자 " + - * / "

덧셈 "+"

뺄셈 "-"

곱셈 "*"

나눗셈 "/"

 

1+2 // 3

5-3 // 2

2*3 // 6

10.0 / 2.5 // 4.0

 

C, Object-C 랑 다르게 Swift는 사칙 연산의 값이 오버플로우 되는걸 허용하지 않는다. <- 먼뜻??

 

 오버플로우: 선언한 변수에 허용된 범위를 초과하는 할당이 되는 경우를 말함.

Ex. 문자열 두개를 합치기 (할당된 문자열 1개를 초과하는 2개의 값을 만들기 위해, 오버플로우 연산자를 써야함)

"hello, " + "world" // equals "hello, world"

 

나머지 연산자

정수 나누기 정수해서 몫을 제외한  나머지 값을 출력하는 연산.

a % b 처럼 나머지 연산을 지원하는 것.

 

9 % 4 // 1

-9 % 4 // -1

 

단항 음수 연산자 <-- -a, !b , c! 처럼 앞뒤로 붙는 단항연산자 중, 앞에 마이너스 표시하는 연산자임.

숫자 값 앞에  "-" 붙인다.

 

let three = 3

let minusThree = -three  // -3

let plusThree = -minus Three // 3 혹은 -(-3)  ㅎㅎ 같은말

 

단항 양수 연산자

"+"로 표현되는 단항 양수 연산자는 부호에 아무런 영향을 끼치지 않는다

let minusSix = -6

let alsoMinusSix = +minusSix //

 

 

 

 

 

 

 

 

 

 

 

'APP 개발 : 기본문법 > SWIFT' 카테고리의 다른 글

튜플  (0) 2021.04.25
SWIFT 기본문법 : 상수와 변수  (0) 2021.04.24
Swift 기본문법 : 명명법 / 콘솔로그 / 문자열 보간법  (0) 2021.04.24
SWIFT 기본문법  (0) 2021.04.24
SWIFT 기본문법  (0) 2021.04.24