var numbers:[Int]=[] // 뿐 아니라
var names = [Int]()/
var numbers:Array<Int> = Array<Int>() //도 있다.
//insert, remove는 '위치'를 지정한다'. append는 필요 없다.
numbers.insert(4, at:2) // 2의 위치에 4를 인서트
numbers.remove(at:0) // 0의 위치의 원소를 딜리트
numbers.append(222)
var dic: Dictionary<String, Int> = Dictionary<String, Int>()
// 추가, 수정은 간편히
dic["정해인"] = 1
// 삭제는 value 지정
dic.removeValue(forKey: "정해인")
set은 선언 축약형 없다.
var set1:Set = Set<Int>()
// insert, remove 사용 가능
외부 인자(argument label) 지정시,
함수 내부에선 외부 인자 사용이 불가하며,
함수 외부에선 parameter 사용이 불가하다.
func send(from me:String, to you:String){
print("from \(me), to \(you)")
// print("from \(from), to \(to)") 시 에러
}
send(from:"Yoonjong", to:"Him")
// send(me:"Yoonjong", you:"Him") 시 에러
인자를 배열처럼 사용하며, 함수당 하나만 사용가능하다.
func sender(me:String, friends:String...) -> String {
return "Hello \(friends[3]), this is \(me)"
}
sender(me: "yoonjong", friends: "unix", "Brad", "sis", "linux")
let humid = 65
switch humid {
case 0...40:
print("건조")
case 41...69:
print("쾌적")
default:
print("짜증")
}
적어도 한 번은 실행된다.
var x = 10
repeat {
x += 5
} while x < 9
print(x) // 15 출력됨.
var name:String? // 기본값은 nil이다!
var optionalName:String? = "Gunter"
print(optionalName) // optional binding 필요
// var newName:String = optionalName // 옵셔널로 선언됐기에 에러
var number:Int? = 3
if let res = number {
print(res)
} else { }
// if let 구문은 res가 if 문 내에서만 사용 가능
guard let result = number else { return }
print(result)
// guard let 구문은 선언한 result 변수가 함수 전체에서 사용할 수 있다.
비교연산자를 이용하여 비교시, 컴파일러가 자동으로 옵셔널을 해제한다.
let value:Int? = 6
if value == 6 {
print("value is 6")
} else {
print("x")
}
let string = "12"
// var strToInt:Int? = Int(string)
// string이 한글, 영어 일 경우 nil이 반환될 것이므로 반환타입이 optional int
// 이때 아래와 같이 한다면 묵시적 옵셔널 해제
var strToInt:Int! = Int(string)