꼼꼼한 재은씨의 swift 문법편 p118-
-헤더 파일을 작성할 필요가 없다.
-대소문자 구분
관례) 1)함수, 메소드, 인스턴스명의 첫글자는 소문자
2) 클래스, 구조체, 프로토콜 등 객체의 첫글자는 대문자
-구문 끝의 세미콜론 생략 가능
-엔트리 포인트(시작점)으로 사용되는 main()함수가 없다.
대신, @UIApplicationMain 어노테이션을 사용하여 앱을 시작하는 객체를 지정. 이 어노테이션이 붙은 객체는 단 하나뿐이어야 함.
-문자열뿐만 아니라 문자도 큰따옴표 "" 사용 (문자열, 문자 모두)
문자를 저장하는 변수나 상수의 타입은 반드시 Character타입으로 명시해주어야함. 안그러면 타입추론기에 의해 문자열로 처리됨(string)
-import 키워드를 사용하지만, 라이브러리와 프레임워크의 참조용도.
-한줄 주석, 여러줄 주석처리 모두 가능. 주석 내 주석도 가능
-try ~catch 방식의 오류 처리를 지원
(함수나 메소드가 리턴값 또는 매개변수를 이용하지 않고 외부로 직접 오류를 던질 수 있도록 하는 기능)
[ 3.1. 변수와 상수를 정의하는 방법 ]
-변수 선언 : var + 변수명
-상수 선언: let + 상수명
1. 변수 정의하는 방법 (선언과 동시에 초기화 가능 = 스위프트) var year: 선언 year = 1999 :초기화
var year = 1999 //1)정수형 변수
var message = "Hello, World" // 2)문자열 변수
정수형 타입의 변수는 이후로도 정수만 대입 가능, 문자열 타입의 변수에는 문자열만 대입 가능.
이후로 타입 변경 안됨. 같은 타입이 아닐 경우 변수의 값을 변경할 수 없다.
= 대입 연산자
var 키워드로 선언된 변수에 처음으로 값을 대입하는 과정 : 초기화
스위프트는 대부분 초기화 과정에서 변수 타입이 결정됨.
let birthYear = 1999 //1)정수형 상수
let welcomeMessage = "Hello, World" // 2)문자열 상수
*선언과 초기화를 분리할 수 있는가?
변수의 경우 yes, 상수의 경우는 선언과 초기화가 동시에 이루어져야 한다.
cf)타입 어노테이션: 변수의 타입을 직접 정의해주는 것. ex) var year: Int
[ 3.3 자료형 ]
문자 + 숫자 = ?
문자와 숫자를 바로 결합할 경우 스위프트에서는 이를 오류로 처리함.
값의 종류가 일치해야만 그에 맞는 처리가 가능.
단, 한가지 전제. 변수나 상수에 할당되는 값은 모두 타입 구분이 될 수 있어야 함.
스위프트에서는 변수나 상수를 정의할 때, 반드시 숫자, 문자, 문자열, 논리(참/거짓) 등 몇 가지 종류의 타입을 지정하고 그에 맞추어 사용해야 함. 이를 데이터타입(자료형)이라고 한다.
[3.3.1 기본 자료형]
Int
부호 있는 정수값 저장.(양수~음수까지의 정수를 저장하고자 할 때 사용)
-128 ~ 127 (256개)
-Int8, Int16, Int32, Int64까지의 서브자료형 가지고 있으며, 실행 환경의 플랫폼에 따라 유연하게 처리된다.
UInt
Unsigned Integer : 부호가 없는 정수. 양수만 저장 가능. 0 포함하여 1~~ 자연수 범위의 정수를 말함.
Int보다 두 배 큰 범위까지 저장 가능.
Double & Float
Double : 64bit 부동소수점 자료형. (더 넓은 범위~ 더어블) - 매우 정확해야 , 또는 매우 넓은 범위의 실수값 저장. 소수점 아래 15~16자리의 값에 대한 정확도 보장. 더 세밀.
Float: 32bit 부동소수점 자료형. 소수점 아래 7~8자리까지 저장
Bool
true.false 두 가지 값만 가능. 주로 논리값 저장.
String
큰 따옴표 사용
var projectname = "iOS study"
let language = "swift"
Character
한개의 문자를 저장할 수 있는 단일 자료형. 큰따옴표 사용
String 타입에 저장된 문자열을 하나씩 분해하면 character타입이 된다.
var firstLetter : Character = "s"
var lastLetter : Character = "t"
[3.3.2 타입 추론과 타입 어노테이션]
타입 어노테이션
: 변수나 상수를 선언할 때, 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 컴파일러에게 직접 알려주는 문법.
변수나 상수명 뒤에 콜론(:)을 붙이고, 이어서 저장될 값의 타입을 작성해주면 됨.
타입 추론
: 변수나 상수를 초기화할 때 입력된 값을 분석하여 변수에 적절한 타입을 컴파일러가 스스로 추론하는 기능.
초기값으로 "Hello, World"가 입력되었다면 '아, 이 변수의 타입은 String타입이겠군'이라고 추론.
타입 어노테이션을 써야할지 말지 고민이 될 때?
결론: 반드시 타입어노테이션을 사용해야하는 다음 두가지 경우를 제외한다면, 타입을 명시적으로 선언하지 않아도 됨.
1) 선언과 초기화를 분리할 경우
//선언 + 타입 어노테이션
var year : Int
//초기화
year = 1999
2) 타입 추론으로 얻어지는 타입이 아닌, 다른 타입을 직접 지정할 필요가 있을 때.
타입 추론으로 얻어지는 타입이 우리가 원하는 타입이 아닐 때. 이 때에는 타입 어노테이션을 사용하여 원하는 타입을 직접 지정해주어야 함.
주로 Int대신 Double 이나 Float, String대신 Character, Double 대신 Float
//Int 타입으로 정의, 타입 추론
var temper1 = 3
//Float 타입으로 정의, 타입 어노테이션
var temper2 : Float = 3
컴파일러는 이 둘의 결과를 다음과 같이 처리
temper1=3
temper2=3.0
var charValue = "문" // String? Character?
스위프트는 문자열과 문자 모두 큰따옴표 사용하므로. 한글자인 경우에는 값만 봐서는 문자열인지 문자인지 구분 어려움.
보통 이럴 때 컴파일러가 취하는 합리적인 판단: 더 넓은 범위의 타입으로 추론하는 것.
문자열과 문자의 관계 - 문자열이 이에 해당.
따라서 타입어노테이션 없이 변수나 상수에 한 글자 문자를 대입하면 컴파일러는 문자열로 추론. 해당 변수를 String타입으로 정의.
[3.3.3. 타입이 다른 변수끼리의 결합]
*타입이 서로 다른 변수들 사이의 결합*
var stmt = "꼼꼼한 재은씨의 키는"
var height = 185
var heightStmt = stmt + String(height)
String(문자열로 바꾸고 싶은 정수값 또는 변수)
정수값이나 기존의 변수를 문자열 타입으로 바꾸는 것이 아니라, 새로운 문자열 인스턴스를 만드는 것.
기존의 변수에는 아무런 영향 없이, 새로 생성하는 것.
*문자열 템플릿*
:변수나 상수의 값을 문자열 속에 포함시키는 방법. 정수나 실수 등 문자열이 아닌 값도 변환 과정 없이 사용할 수 있도록 스위프트가 제공하는 기능.
문자열에서 원하는 위치에 백슬래시 \ 를 입력하고, 포함하려는 값이 들어있는 변수나 상수를 괄호로 감싸면 끝.
괄호 내부에서 값을 연산할 수도 있다.
반드시 변수나 상수를 사용해야하는 것은 아님.
[3.3.4. 스위프트4에서 문자열 처리]
트리플 쿼우팅, 멀티 라인 문자열.
연속한 세개의 따옴표를 이용하여 여러 줄에 걸친 긴 문자열을 손쉽게 작성하는 문법.
쿼우팅이란?
문자열을 따옴표로 묶어 표시하는 방법. ""
문자열에 불필요하게 의미를 부여하지 말고 주어진 그대로 이해해 달라.
스위프트에서의 기본 쿼우팅 처리.
더블 쿼우팅.(문자열을 처리할 때 큰따옴표 사용)
"Swift" //String
"S" //Character 또는 String
'iOS > iOS Swift 개발 일기' 카테고리의 다른 글
iOS swift 실습 중 기능별 찾아볼 수 있게 정리 (0) | 2022.06.11 |
---|---|
iOS swift WKWebView (0) | 2022.06.10 |
iOS swift 웹 뷰 앱에서 웹 페이지를 여는 방법 (0) | 2022.05.29 |
iOS swift 일반 뷰 컨트롤러에서 테이블 뷰 사용 (0) | 2022.05.29 |
iOS swift 재사용 매커니즘 (0) | 2022.05.29 |