일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- iOS #Swift #컴공 #공대생
- 컴공 #자바스크립트 #스터디 #JS #대학생
- iOS #Swift
- iOS #대학생 #Swift
- web #socket #polling #소켓 #폴링 #네트워크 #웹
- 컴공 #Swift #대학생 #iOS #앱개발
- 컴공 #Swift #대학생 #iOS
- 컴공 #Swift #대학생 #iOS #앱개발 #앱디자인
- ios #boxoffice #영화진흥위원회 #swift #앱 #app #대학생
- java #android #xml #sqlite
- iOS #Swift #대학생 #개발 #코딩
- node.js #npm #jest #test #웹테스트
- ios #swift #개발자 #apple
- iOS #Swift #컴공 #대학생
- Today
- Total
평범한 컴공 대학생의 공부일지
iOS Swift 자료형, 상수(let), 변수(var), 튜플(Tuple) 본문
※이 iOS 카테고리의 글 들은 학교 강의와 과제를 기반으로 작성한 것입니다.※
※Window환경에서 작업하기 때문에 Online Compiler를 사용하는 점 참고 부탁드립니다.※
이번 글에서는 Swift의 자료형, 상수, 변수, 튜플에 대해서 알아보겠습니다.
- 자료형
1. 값(숫자, 문자)을 저장하기 위한 변수를 선언하기 위해 타입을 지정해 줍니다.
Ex) var myNumber = 10;
★ 위 예시와 같이 초깃값이 존재할 경우 Compiler가 타입 추론(type inference)을 하기 때문에
자료형을 명시할 필요가 없습니다.
즉, 초깃값을 설정하지 않은 경우에만 자료형을 명시해 줍니다.
2. 종류
- Int
1) 정수(양수, 음수, 0)를 저장하는 데 사용하는 정수형 데이터 타입(자료형)
2) 8, 16, 32, 64bit 지원
3) 특정 크기의 데이터 타입보다 Int 자료형을 권장합니다.
4) 플랫폼(하드웨어, 소프트웨어 플랫폼(Window 64bit))에 따라 크기가 달라집니다.
★C언어는 Int형이 4바이트지만 Swift에서는 8바이트입니다.
아래 코드는 Int형의 크기를 알아보는 코드입니다.
var x = 10 // 가변 변수 X 선언
print(type(of:x)) // X의 타입 출력, type(of:) 함수 = 변수나 상수의 타입 확인
let s = MemoryLayout.size(ofValue: x) // X의 메모리 크기 계산 -> 불변 변수 S에 할당
// Int 타입은 8바이트이므로 S의 값은 8
let t = MemoryLayout<Int>.size // 특정 자료형(Int)가 차지하는 공간 크기 계산 -> 값은 8
print(s, t, 77, 84.9) // X의 메모리 크기, Int의 공간 크기, 77, 84.9 출력
추가적으로 Int형이 32비트, 64비트에 따라 다룰 수 있는 숫자의 크기가 어떻게 달라지는지 확인해 볼게요.
아래 코드는 32비트, 64비트에 따라 다룰 수 있는 숫자의 크기를 출력해 줍니다.
var x : Int = 10
print(x) // 10
print("x") // x
print("\(x)") //10(2번째 줄의 코드와 같은 결과지만 문자열이 있어 문자열 형태로 출력됨)
print("값은 \(x)입니다.") // "" 안에서 \(변수)는 연결 연산자(+)와 같은 기능
// 값은 10입니다.
print("Int32 Min = \(Int32.min) Int32 Max = \(Int32.max)") //32비트의 크기
// -2^31 ~ 2~31-1 출력
print("Int64 Min = \(Int64.min) Int64 Max = \(Int64.max)") //64비트의 크기
// -2^63 ~ 2^63-1 출력
Int를 알아봤으니 선언하고 사용하는 방법을 알아봐야겠죠?
아래 코드는 Int형을 선언하고 사용하는 코드입니다.
//var x = 77; 이 코드도 print(X)와 같이 실행하면 정상적으로 실행 된다.
//var x : Int = 77;
var x : Int
x = 10 // '=' 대입연산자를 사용하는 경우 양쪽에 공백을 똑같이 넣어줘야한다.
print(x) // 77 출력
- Double
1) 소수점이 있는 숫자, 8바이트의 크기
2) Float(32bit, 소수점 6자리)과 Double(64bit, 소수점 15자리, 기본) 타입의 자료형을 제공합니다.
3) var myWeight : Double = 72.5; 또는 var myWeight : Double 또는 var myWeight = 72.5;
var x : Double = 1.234567890123456888889 // 15자리까지만 표현 그 이후는 이상한 값
var y : Float = 1.234587890123456789 // 6자리까지만 표현 그 이후는 이상한 값
print(x) // 1.23456789012345까지 출력 이후 쓰레기 값
print(y) // 1.234567까지 출력 이후 쓰레기 값
- Bool
1) True(참, 1) or False(거짓, 0)을 처리
2) var A : Bool = true 또는
var A : Bool 또는 var A = false;
- Character
1) 유니코드(문자, 숫자, 부호, 심볼) 문자 하나를 저장
2) 다른 자료형처럼 자료형을 생략할 수 없습니다.
생략하면 String으로 인식하기 때문에 Character를 사용하기 위해선 자료형을 명시해줘야 합니다.
3) 사용 방식은 var 변수명 : Character = "초깃값" 이렇게 사용됩니다.
꼭 ' '가 아닌 " "를 사용해줘야 합니다.
4) 유니코드를 사용할 때는 "\u(유니코드)"를 사용합니다. -> 이스케이프 시퀀스
아래 코드는 Character를 설명하는 간단한 예제 코드입니다.
// 'Character' 변수를 선언하고 초기화합니다.
var letter: Character = "a"
// 'letter'의 값을 출력합니다.
print(letter) // 출력: a
// 'letter'에 다른 문자를 할당합니다.
letter = "b"
// 'letter'의 새로운 값을 출력합니다.
print(letter) // 출력: b
// 이 코드는 Swift에서 단일 문자를 다루는 방법을 보여줍니다.
// 'Character' 타입은 한 개의 문자만 저장할 수 있으며,
// 이것은 문자열(String)과 구별되는 점입니다.
- String
1) 단어나 문장을 구성하는 일련의 문자
2) 문자열 보간(String Interpolation) 사용 -> 문자열, 변수, 상수, 표현식, 함수 호출 조합 가능
var userName : String = "Taram"
// : String 생략 가능 -> var userName = "Taram"
var age = 22
var message = "\(userName)의 나이는 \(age)입니다." // \(변수)를 사용하여 문자열 안에 변수를 연결하여 출력가능
print(message) //Taram의 나이는 22입니다. 출력
- Var(변수, 가변 변수)
- 자바스크립트에서도 다뤘듯이 Swift에서도 Var을 사용합니다.
- 정의 : 프로그램에서 사용될 데이터를 저장하기 위한 메모리 공간
- 가변 변수기 때문에 할당된 값을 변경할 수 있습니다.
var myVariable = 30 // :Int
print(myVariable)
// 값 30 출력
myVariable = myVariable + 6
print(myVariable)
// 가변 변수이기 때문에 값을 바꿀 수 있어 6을 더한 값인 36 출력
- let(상수, 불변 변수)
- 한 번 할당되면 이후에 변경 불가능
- 코드 내에서 반복적으로 사용되는 값이 있을 경우에 유용합니다.
- 유니코드를 사용하여 변수명에 특수기호나 이모티콘을 사용 가능하지만 가독성 때문에 추천하지 않습니다.
★ 애플은 코드의 효율성과 실행 성능을 높이기 위해서 var 보다는 let을 사용하라고 권장하고 있습니다.
아래 코드는 불변 변수라 값을 변경할 수 없다는 것을 확인할 수 있는 코드입니다.
let myVariable = 30 // :Int
print(myVariable) //30
myVariable = myVariable + 6
print(myVariable) //36
- Tuple(튜플)
- 여러 값을 하나의 개체에 일시적으로 묶는 방법
- array(배열)과 비슷하나 [ ]가 아닌 ( )을 사용합니다.
그리고 값들이 동일한 타입일 필요가 없으며 어떠한 타입도 될 수 있습니다.
- 선언 및 사용 방법
-> 선언 : let myTuple = (22, 77.7, "Taram")
-> 사용 : var myString = myTuple.0(Tuple이름. 인덱스 번호)
-> 출력 시 인덱스 0번에 해당하는 22의 값이 출력됩니다.
- Void는 빈 Tuple을 의미합니다.
- Tuple 간단 과제
1. myTuple의 자료형 확인하기
let myTuple = (22, 77.7, "Taram") //튜플에 Int, Double, String형 자료 저장
print(type(of:myTuple)) //튜플 값들의 자료형을 출력
//(Int, Double, String) 출력
let (myInt, myFloat, myString) = myTuple //튜플의 값들을 불변 변수로 각 순서대로 변수에 저장
2. Tuple을 생성하고 각 값에 이름 할당(분리)
let myTuple = (22, 77.7, "Taram") //튜플에 Int, Double, String형 자료 저장
print(type(of:myTuple)) //튜플 값들의 자료형을 출력
//(Int, Double, String) 출력
let (myInt, myFloat, myString) = myTuple //튜플의 값들을 불변 변수로 각 순서대로 변수에 저장(이름 할당)
print(myInt, myFloat, myString) // 할당된 이름으로 Tuple에 저장된 값들을
// 22, 77.7, Taram 출력
3. Tuple 인스턴스의 message 등 값들을 출력하는 코드
let myTuple = (age: 22, weight: 77.7, message: "Taram hi")
print(type(of:myTuple))
// (age: Int, weight: Double, message: String) 출력
print(myTuple.0, myTuple.age, myTuple.message)
// 인덱스 0번에 해당하는 값, age에 해당하는 값, message에 해당하는 값 순서대로 출력
// 22 22 Taram hi 출력
- 강의 중간 과제
1. print 함수 예를 들어 설명하기
// 문자열을 출력합니다.
print("Hello, World!") // "Hello, World!"를 콘솔에 출력합니다.
// 변수나 상수의 값을 출력합니다.
var myName = "John"
print(myName) // "John"이라는 문자열을 콘솔에 출력합니다.
// 여러 개의 값(문자열, 숫자 등)을 쉼표로 구분하여 한 줄에 출력할 수 있습니다.
let apples = 3
let oranges = 5
print("I have", apples, "apples and", oranges, "oranges.")
// "I have 3 apples and 5 oranges."라는 문자열을 콘솔에 출력합니다.
// 조건문의 결과를 출력할 수도 있습니다.
let isTrue = true
print("The statement is", isTrue)
// "The statement is true"라는 문자열을 콘솔에 출력합니다.
// 배열이나 딕셔너리 등의 컬렉션 타입을 통째로 출력할 수 있습니다.
let array = [1, 2, 3]
print(array) // "[1, 2, 3]"라는 배열 내용을 콘솔에 출력합니다.
let dictionary = ["apple": "red", "banana": "yellow"]
print(dictionary)
//"["apple": "red", banana: yellow]"와 같은 형태로 딕셔너리 내용이 랜덤한 순서로 콘솔에 출력됩니다.
2. Default 인자의 정의와 사용하는 언어의 종류(wrtn.ai 사용)
Default 정의 : 특별한 값을 지정하지 않았을 때 사용되는 기본 값
func sayHello(to name: String = "friend") {
// name 파라미터는 Default로 friend 값을 가집니다.
print("Hello, \(name)!")
}
// sayHello()로 호출하면 Hello, friend! 출력
// sayHello(to:"Taram")로 호출하면 Hello, Taram!이 출력
1) python(함수 정의 시 사용)
def greet(name="World"):
print(f"Hello, {name}!")
2) Swift(함수 정의 시 사용)
func greet(name: String = "World") {
print("Hello, \(name)!")
}
3) Kotlin(함수 정의 시 사용)
fun greet(name: String = "World") {
println("Hello, $name!")
}
4) C++(함수 선언 시 사용)
void greet(std::string name = "World") {
std::cout << "Hello, " << name << "!\n";
}
5) JavaScript(ES6이상, 함수 선언시 사용)
function greet(name = 'World') {
console.log(`Hello, ${name}!`);
}
3. Tuple을 지원하는 프로그래밍 언어의 종류
1) Python (쉼표로 구분된 값들의 시퀀스를 () 안에 넣어서 생성합니다)
my_tuple = ("apple", "banana", "cherry")
2) Swift (여러 값을 하나의 그룹으로 묶어 사용합니다)
let myTuple = (1, "Bob", 3.14)
3) Go (멀티 반환 값을 위해 Tuple형태로 사용합니다)
func getPerson() (string, int) {
return "John", 25
}
name, age := getPerson()
4) Rust (여러 값을 그룹화하는 데 사용)
let my_tuple = (10, "hello", true);
5) Kotlin (Pair와 Triple 클래스 제공 -> 2개와 3개의 값을 갖는 Tuple 생성 가능)
val myTuple = Pair("apple", 10)
val anotherTuple = Triple("banana", true, 3.14)
6) C# (ValueTuple 형식을 사용하여 튜플 기능 제공)
var myTuple = ("apple", 10);
var anotherTuple = (name: "banana", quantity: 5);
Console.WriteLine(myTuple.Item1); // 출력: apple
Console.WriteLine(anotherTuple.name); // 출력: banana
7) JavaScript (배열이나 객체를 사용하여 Tuple과 유사한 동작 구현 가능)
const myTuple = ["apple", 10];
const [fruit, quantity] = myTuple;
console.log(fruit); // 출력: apple
console.log(quantity); // 출력: 10
const anotherTuple = { name: "banana", quantity: 5 };
console.log(anotherTuple.name); // 출력: banana
4. Camel Case(Lower, Upper)에 대한 설명
1) Upper Camel Case : 변수나 함수 이름에 여러 단어를 사용할 때, 각 단어의 첫 글자를 대문자로 표시하는 방법
첫 번째 단어는 소문자로 시작하며, 그 뒤의 모든 단어는 대문자로 시작합니다.
Ex) `MyVariableName`, `PrintMyName`
2) Lower Camel Case : 첫 문자를 소문자로 표시하는 방법
Ex) myVariableName, printMyName
'iOS Swift' 카테고리의 다른 글
iOS Swift 클로저(후행 클로저), 클래스(Class) (2) | 2023.10.22 |
---|---|
iOS 1급 객체(시민)와 클로저 (2) | 2023.10.15 |
iOS Swift Guard문, 함수 (2) | 2023.10.15 |
iOS Swift 제어문(Control Flow), 함수 (2) | 2023.10.01 |
iOS Swift 옵셔널(Optional), 연산자 (0) | 2023.09.24 |