swift 기본문법
//: Playground - noun: a place where people can play
import UIKit
// var str:String ="Hello, playground"
var str = "Hello, playground"
str = "Hello, "
//
let myName = "bluexmas"
// char 타입
let lastName:Character = "류"
// int 타입
let age = 38
// boolean 타입
let isAult = true
print(isAult ? "성인" : "어린이")
// 범위연산자
for i in 1...5 {
print(i)
}
// 자료형
print(Int.max)
print(Int8.max)
print(Int16.max)
print(UInt.max)
let num:Int8 = 10
let pi = 3.14159
// 자동 형변환 없음
//print(myName + age)
print(myName + String(age))
print("\(myName) 나이는 \(age)")
// 숫자형도 형변환이 없으면 더할수 없음
print(Double(num) + pi)
// 조건문
if str == "한글" {
print("참")
} else if str == "play" {
print("play도 아니다.")
} else {
print("거짓")
}
if str != "최현택" && age == 38 {
print("최현택은 아니지만 나이는 같다.")
}
// in line
isAult ? print("성인") : print("청소년")
// switch
switch age {
case 0..<20:
print("청소년")
case 20..<30:
break // switch 를 빠져나감
case 30..<40:
print("30대")
fallthrough // break 와 다르게 이하 case 조건 실행
default:
print("성인")
}
// 문자열 switch
switch lastName {
case "김", "이", "박":
print("김이박")
default:
print("test")
}
// 배열
let nameArray:[String] = ["추신수", "박찬호"]
var i = 1
var sum = 0
while i<=10 {
sum += i
i += 1
print(sum)
}
구구단 출력
// 구구단
for i in 2...9 {
print("\n \(i) 단\n")
for j in 1...9 {
print("\(i) * \(j) = \(i*j)")
}
}
배열
// 배열
var arrray2:Array<string> = ["java", "c#", "delphi"]
var nameArray:[String] = ["java", "c#", "delphi"]
// 추가
nameArray.append("javascript")
// 삽입
nameArray.insert("sql", at: 2)
// 제거
nameArray.remove(at: 1)
print(nameArray)
// 대치
nameArray[0] = "자바"
// 출력
for i in 0...2 {
print(nameArray[i])
}
// 배열의 Count
print("배열의 Count = \(nameArray.count)")
// 일부만 출력
print(nameArray[0...1])
// 전부 삭제
nameArray.removeAll()
Dictionary
// Dictionary
var capitalDic2:Dictionary<string, string=""> = ["한국" : "서울", "영국" : "런던", "미국" : "워싱턴"]
var capitalDic = ["한국" : "서울", "영국" : "런던", "미국" : "워싱턴"]
print(capitalDic["한국"]) // Optional("서울")
for capital in capitalDic.values {
print(capital)
}
for (country, capital) in capitalDic {
print("\(country) 국가의 수도는 \(capital)")
}
// 추가
capitalDic["중국"] = "배이징"
print(capitalDic)
// 삭제1
capitalDic.removeValue(forKey: "미국")
print(capitalDic)
// 삭제2
capitalDic["중국"] = nil
print(capitalDic)
// 전부삭제
capitalDic.removeAll()
print(capitalDic)
함수
// 함수
func printStr() {
print(str)
}
func sum(lns : Int, rhs : Int) -> Int {
return lns + rhs
}
print( sum(lns: 5, rhs: 3) )
튜플(Tuple)
// 튜플(Tuple)
func getMyInfo() -> (String, Int, String, String) {
return ("블루", 10, "010-xxx-xxxx", "bluexmas@tistory.com")
}
let (name, age, phone, email) = getMyInfo()
print(name)
print(age)
print(phone)
print(email)
구조체
클래스와 다르게 구조체는 기본 자료형(int, boolean)처럼 대입시 별도의 메모리가 할당 되고, 클래스처럼 상속을 받을 수 없습니다.
// 구조체
struct UserInfo {
var name : String
var age : Int
var email : String
// swift 제고 초기화 함수
init(name : String, age : Int, email : String) {
self.name = name
self.age = age
self.email = email
}
func showInfo() {
print("이름 : \(name), 나이 : \(age) 메일주소 : \(email)")
}
}
var userInfo1 = UserInfo(name : "블루", age : 10, email : "bluexmas@tistyory.com")
var userInfo2 = UserInfo(name : "레드", age : 10, email : "bluexmas@tistyory.com")
userInfo1.showInfo()
var userArray:[UserInfo] = []
userArray.append(userInfo1)
userArray.append(userInfo2)
for info in userArray {
info.showInfo()
}