Download - Swift 세미나
Swift 연산자와 문자열
창원대학교 정보통신공학과 Mobile-X 김 용 재
지도교수 : 박동규 2015.01.06
Swift 연산자
• Objective-C의 표준 연산자들을 제공
• Objective-C의 실수들을 사전에 방지할 수 있는 기능을 제공
• 기본 연산자의 동작을 재정의 할 수 있는 기능을 제공
• 새로운 연산자를 만들어서 사용할 수 있는 기능을 제공
할당 연산자 ( = )
• 변수의 값을 초기화하는데 사용하는 연산자
• 하나의 변수에 다른 변수의 값이나 상수등을 할당하는 연산자
변수 x의 값을 5로 할당하는 할당 연산자의 예제
Swift 할당 연산자
Swift에선 튜플의 초기값을 설정하거나 다른 튜플의 값을 할당할 때 할당 연산자를 사용
튜플의 값을 할당시키는 예제
Swift 할당 연산자
C & Objective-C • x에 y값이 할당되어 x값의 참(0제외) 거짓(0)을 반환
Swift • x에 y값이 할당되나 값을 반환하지 않기 때문에 오류!!
오류 발생!!
Swift if구문은 할당연산자를 통한 실수를 사전에 미리 방지하는 기능을 추가
C와 Objective-C의 할당 연산자와는 다른 Swift의 할당연산자는 ‘값’을 반환하지 않도록 변경
산술 연산자
Swift는 4가지 표준 산술 연산자를 모든 숫자 타입에 지원
• 덧셈(+)
• 뺄셈(-)
• 곱셈(*)
• 나눗셈(/)
Swift 산술 연산자
• Swift 산술 연산자는 오버플로우를 지원하지 않음
• 그러나 Swift 오버플로우 연산자를 사용하여 오버플로우 행동을 선택할 수 있음
• 덧셈 연산자는 문자열을 지원
• String + String = String
나머지 연산자
(a % b)란 b의 배수가 a에 맞게 곱해지며 남아 있는 값을 반환
ex) 9 % 4 = 1
Swift 나머지 연산자
a = (b x 배수) + 나머지 배수는 a 에 들어갈 b의 최대의 숫자
a 값이 양수 나머지 값도 양수
b 값이 음수여도 나머지값은 상관 없음
부호무시!
a 값이 음수 나머지 값 음수
음의 값에도 나머지 연산자 적용 가능
(4 x 2) + 1
(4 x 2) + 1
(4 x -2) + (-1)
(4 x -2) + (-1)
Swift 나머지 연산자
Swift 에선 부동소수점 나머지 연산 지원
Ex) 8 % 2.5 = 0.5
증가 감소 연산자
• 증가(++) 연산자와 감소(--) 연산자를 지원한다.
• 증가연산자는 변수에 + 1의
• value++ value = value + 1
• 감소연산자는 변수에 - 1의 약어
• value-- value = value - 1
단항 연산자
• 변수의 앞에 - 부호를 붙이는 단항 마이너스 연산자
• 단항 마이너스 연산자를 통해 숫자값의 부호를 바꿀 수 있다.
• -value
• 단항 플러스 연산자
• 단항 마이너스 연산자와는 달리 아무 역할도 하지 못한다.
• +value
복합할당 연산자
• Swift는 복합할당 연산자를 사용할 수 있다.
• ex) +=, -=, *= 등..
그러나 앞에 할당 연산자에서 설명하였듯이 연산 결과의 반환값을 리턴할 수 없다는 것을 주의
비교 연산자• Swift는 표준 C의 비교 연산자를 지원
• 같음 연산자 ( a == b )
• 같지 않음 연산자 ( a != b)
• 보다 큰 ( a > b )
• 보다 작은 ( a < b )
• 보다 크거나 같은 ( a >= b )
• 보다 작거나 같은 ( a <= b )
비교연산자는 각 문장이 참인지 여부를 나타내는 ‘Bool’ 값을 반환
삼항 조건 연산자
question ? answer1 : answer2
question이 참이면 answer1 값이 반환
question이 거짓이면 answer2 값이 반환
Swift 범위 연산자
• 폐쇄 범위 연산자 (a...b)
• 반폐쇄 범위 연산자 (a..<b)
Swift 폐쇄 범위 연산자
• a...b는 a에서 b까지의 범위를 포함하며 a와 b를 포함함
1과 5를 포함하는 범위
범위 연산자는 배열과 리스트의 원소를 하나씩 참조하기 편하게 만든 범위로 Float형은 오류가 난다!!
Swift 반 폐쇄 범위 연산자
• a..<b는 a에서 b까지의 범위를 포함하며 b를 제외함
• 배열과 리스트의 원소를 참조할 때 편함
결과 화면
0 31 2
4
논리 연산자
• 논리 연산자는 참과 거짓의 불리언값인 논리값을 수정하거나 결합
• 논리 not 연산자 ( !value ) - 논리값 반전
• 논리 and 연산자 ( valueA && valueB )
- 하나라도 논리 값이 거짓이면 전체 표현식 또한 거짓
• 논리 or 연산자 ( valueA || valueB )
- 하나라도 논리 값이 참이면 전체 표현식 또한 참
Swift 문자와 문자열
• 이제 문자열 표시는 @“Hello World”가 아닌 @가 사라진 “Hello World”
• 포인터 참조 형식인 Objective-C 의 문자열과 달리 Swift의 문자열은 값 형식이기 때문에 할당이나 파라미터 등에 사용될 때 참조가 아닌 값 자체가 복사
Swift 문자열 초기화• 문자열 초기화엔 두가지 방법이 있다.
1. “”
2. String()
빈 문자열 값을 알 수 있게 해주는 isEmpty 속성
문자와 문자열문자열이 아닌 개별 문자를 선언할 때는 Character 자료형을 직접 지정해 주어야 한다.
문자열
문자
Objective-C 와 C에선 ‘a’ 와 “a” 같은 작은 따옴표와 큰 따옴표로 문자와 문자열을 구분 하였으나
Swift에서는 작은 따옴표를 쓰지 않고 큰 따옴표만 쓰기 때문에 문자를 정의할 땐 자료형을 정의하여야한다.
Swift 문자열
문자열(String)은 문자 자료형(Character)의 집합
문자열 “Dog!🐶”는 D, o, g, !, 🐶의 문자로 이루어진 집합
Swift 문자열 countElements
문자열의 문자의 갯수를 문자열 자료형으로 넘겨주는 countElements
Swift 문자열 연산자String 문자열끼린 + 연산자를 통하여 서로 합쳐질 수 있음
Character 문자 자료형과 String을 연결하기 위해선 append속성을 이용하여 연결 가능
String + Siring (가능) String + Character (불가능) Character + Character (불가능) Stirng.append(Character) (가능) Character.append(String & Character) (불가능)
Swift 문자열 삽입Objective-C의 문자열은 기본적으로 불변 문자열
가변 문자열은 NSMutableString 객체를 사용 하여야 했음
별도의 클래스를 제공하던 Objective-C와는 달리 Swift는 기본적으로 가변 문자열은 var 불변 문자열은 let으로 선언 NSMutableString, MutableString 자료형은 사라짐
문자열 삽입은 상수, 변수 등을 문자열안에 포함시켜 새로운 문자열 값을 만드는 방법
Swift의 유니코드
• 컴퓨터가 문자를 알기위해 숫자로 정의해 놓은 문자코드
• 8비트 유니코드: \xnn (n:16진숫자 하나)
• 16비트 유니코드: \unnnn
• 32비트 유니코드: \Unnnnnnnn
• 특별한 문자형(Escape) - 이스케이프: \0(null character), \\, \t, \n, \r, \", \'
유니코드의 Character
여러가지의 유니코드가 한 Character안으로 들어가게 되면 원래 유니코드로 표현이 가능한 표현은 합쳐져서 할당된다
Swift의 다양한 유니코드
Swift는 숫자와 문자뿐만 아니라 다양한 심볼이나 이모티콘도 유니코드로 활용
Swift 문자열 유니코드
Dog‼🐶 문자열의 8비트 유티코드
8비트 16비트 32비트 유니코드로 접근할 수 있으며 비트수가 커질 수록 유니코드는 적게 나옴
128, 188 유니코드는 강아지 이모티콘의 유니코드이다
Swift 유니코드 Scalar유니코드 Scalar란 각각의 유니코드가 우리에게 어떻게 보여지는지에 관한 값
Character값이 아닌 유니코드 Scalar 값 !! 느낌표 두개는 한개의 유니코드로 표시가 가능한 것을 알 수 있다.
Swift 문자열 비교
전체 문자열을 비교할 때는 비교 연산자 ==을 이용
Swift 문자열 비교
접두어 비교
접미어 비교
Objective-C에서 제공했던 메소드 그대로 Swift에서도 제공
Swift 대소문자 변환
Objective-C에서 제공했던 메소드 그대로 Swift에서도 제공
감사합니다.
이상으로 세미나를 끝마치겠습니다.