[arcjeen] 1. swift 변수 선언 및 자료형(기본자료형, 형번환, 배열, Set)
1.변수선언
- NSFoundation에 선언되어있는 클래스들을 사용하는 objective-c 와 달리 변수선언은 var, 상수선언은 let 을 통해서 하며 이후 자료형의 표시는 :String, :Charter ,:Int 등 타입어노테이션을 명시하여 사용할 수 있다.
ex)
- Objective-c
NSString *tmpStr = @"testStr";
- Swift
var tmpStr : String = "testStr";
- Swift
var tmpStr = "testStr"; //String
var tmpInt = 19; //int
var tmpBool = true; //bool
//따로 명시하지않는 경우에는 알아서 자료형을 지정한다
- 형변환 NSFoundation 클래스의 형변환 메서드를 이용하지않고도 자료형의 생성자를 사용하여 형변환을 해줄 수 있다.
ex)
- Objective-c
NSString *tmp = @"40";
int i = [tmp intValue]; // NSString to int
int i = 40;
NSString *changeTmp = [NSString stringWithFormat@"%d",i];
//int to String
- Swift
var tmpInt = 40;
var tmpStr : String (40) // int to String
var tmpStr :String = "40";
var i :int = Int(tmpStr) // String to int
- 논리연산자의 사용은 objective-c와 동일하다.
- 배열
배열을 사용하는 형태는 objective-c에 가깝다기보다는 C와 유사하다고 볼 수 있을 것 같다.
objective-c 는 불가변 배열과 가변 배열을 NSArray 와 NSMutableArray 클래스로 나누 어 사용하는 반면 Swift는 두개의 구분 없이 배열안의 내용을 변형 시킬 수 있다.
Swift 에서 불가변 배열을 원할경우 var 가아닌 let으로 선언한다.
- Objective-c
NSArray *tmpArr = [[NSArray alloc]initWithObjects:@"a",@"b",@"c",nil]] ;
//배열 선언 및 초기화
NSMutableArray *tmpArr
= [[NSMutableArray alloc]init];
[tmpArr addobject:@"a"];
[tmpArr addObject:@"df"];
[tmpArr removeObject:@"df"];
[tmpArr replaceObjectAtIndex:1 withObject:@"dfds"];
- Swift
var tmpArr : Array<String> //동적배열 선언
var tmpArr : Array<String>() // 동적배열 선언 및 초기화
var tmpArr : [String]()
var tmpArr = ["a","b","c"]; //정적 배열
tmpArr.append("a");
tmpArr.insert("b" atIndex: 2);
tmpArr[2] = "dffs"; //인덱스를 이용하는 방식은 수정은 가능하지만 추가는 불가능하다.
tmpArr[1...2] = ["a","b","c"]; //범위 연산자를 이용하여 배열에 접근
- Set
- Swift
var name : Set<String> = ["a","b","c"];
var name : Set<String>();
name.insert("d");
name.remove("a"); // 없을경우 nil 반환.
name.removeAll() // 배열비우기
name.contains("a") //검색
- Set 연산 (집합 연산)
- intersect() -> 양쪽 집합에서 공통되는 아이템만 선택하여 새로운 집합을 만들어준다(교집합)
- exclusiveOr -> 양쪽 집합중 한쪽에만 있는 아이템을 선택하여 새로운 집합을 만들어준다
- union() -> 양쪽 집합에 있는 모든 아이템을 선택하여 새로운 집합을 만들어 준다
중복값은 제거되게 된다.(합집합)
- substract() -> 한쪽 집합에 있는 모든 아이템에서 다른쪽 집합의 공통아이템을 제거한다
(차집합)
let oddDigits : Set = [1, 3, 5, 7, 9];
let evenDigits : Set = [0, 2, 4, 6, 8];
let primeDigits : Set = [2, 3, 5, 7];
odddigits.intersect(evenDigits).sort();
//[ ]
oddDigits.exclusiveOr(primeDigits).sort();
// [1, 2, 9]
oddDigits.union(evenDigits).sort();
//[0,1,2,3,4,5,6,7,8,9]
odddigits.substract(primeDigits).sort();
//[1, 9]
* 집합은 배열과 유사하지만 순서나 인덱스가 없고 중복된 아이템을 허용하지 않는다.
% 아직은 foundation 프레임워크의 클래스들을 사용해보지않아 위의 것들이 얼마나 활용도가 있을지는 모르겠지만 objective-c에 익숙한 나로써는 swift 문법의 기본 함수들을 얼마나 쓸지는 아직 잘 모르겠다.