기본적인 코딩 관례
첫 글자는 소문자 : 함수와 메소드, 인스턴스명
첫 글자는 대문자 : 클래스와 구조체
스위프트는 대소문자를 구분
let A = 30;
let a = 30;
세미콜론
세미콜론은 옵션 —> 세미콜론은 써도 되고 안써도 된다. 구문해석기가 알아서 판별한다.
코드의 가독성을 중요하게 생각한다면 세미콜론을 붙여 가독성을 높여도 좋다.
메인함수(X)
스위프트는 엔트리 포인트(시작점)로 사용되는 main() 함수가 없다.
스위프트는 없는 대신에 파일에서 맨 위에 있는 구문부터 순서대로 해석하고 실행한다.
즉 스위프트 내 특정 함수 내부에 작성된 구문이 아니 한, 전역범위에서 작성된 구문을 위에서 부터 차례로 해석하여 실행한다.
스위프트로 작성 된 앱은 main() 함수의 엔트리가 없는 대신, @UIApplicationMain 어노테이션을 사용하여 앱의 시작 객체를 지정
import UIkit
@UIApplication
class AppDelegate : UIResponder, UIApplicationDelegate
문자와 문자열
문자열 뿐만 아니라 문자도 큰 따옴표 사용
따라서 문자를 저장하는 변수나 상수 타입을 Character형으로 명시 필요
별도로 처리하지 않으면 문자열로 인식
import
라이브러리와 프레임워크 참조 용도
같은 프로젝트 내에 선언된 다른 객체를 호출할 때는 별도의 import 구문 없이도 참조할 수 있도록 프로젝트 범위의 네임스페이가 제공
import UIKit
var str = "Hello, playground"
주석
try~ catch 방식의 예외 처리 제공
스위프트2에서 추가된 부분
스위프트1에서 옵셔널 개념으로 제공하였지만, 언어의 안정성을 보장하기에는 한계가 있음
변수와 상수
상수 : 한 번 값이 저장되면 더는 변경 불가능
변수 : 필요에 따라 저장된 값을 몇 번이라도 다른 값으로 변경 가능
변수에 저장된 값을 바꿀 때는 처음에 저장했던 값과 같은 행태이어야 한다. 같은 자료형만 저장이 가능
선언과 초기화
var year = 2015
var message = "Hello, World"
let birthYear = 1988
let welcomeMessage = "안녕"
변수 선언 : var 변수명
상수 선언 : let 변수명
변수의 선언과 초기화 분리
var year = Int
year = 2005
var firstLetter : Character = "S"
let lastLetter : Character ="t"
타입 어노테이션
var year : Int
var name : String
var firstChr : Character
var distance : Double
var pi : float
var flag : Bool
몇가지를 제외하고는 타입을 명시적으로 선언할 필요가 없다.
- 변수나 상수의 선언과 초기화를 분리
- 타입 추론으로 얻어지는 타이입이 아닌 다른 타입을 직접 지정할 필요가 있을 때
타입이 서로 다른 변수 결합
var desc ="오늘은 "
var day = 12
var descDay = desc+String(day)
문자열 템플릿
let name = "youngheon"
let birthYear = 81
let birthMonth = 1
//문자열 템플릿을 구성
let profile = "\(name)님은 \(birthYear)년 \(birthMonth)월 이 생월임
let apple = 3
let banana = 2
let orange = 4
let desc ="과일은 총 \apple+banana+orange)개입니다."
print(desc)
범위 연산자
1...5
1..<5
1>..5
let a = 1
let b = 5
for row in a...b{
row
}