swift & iOS/swift 49

[swift] struct vs. class 구조체와 클래스 (간단함 주의)

구조체와 클래스................................. 말만 들어도 정말 쓸 내용이 많아 보이는데, 일단 여기서는 간단하게 struct와 class 비교에 대해서만 정리하려고 한다. 보충할 내용 있으면 따로 쓰던가 여기에 더 붙여서 작성하려고 한다. struct은 상속 기능이 없다. 그러나 class는 부모 클래스를 가질 수 있고 상속 기능이 있다. class MyClass: ParentClass { } struct은 프로퍼티에 초기값이 없어도 자동으로 init() 해주지만 class는 프로퍼티에 초기값을 할당하지 않을 땐 class 내부에 init()을 꼭 작성해야 한다. struct은 passed by value이고 class는 passed by reference이다. 이게 무슨 ..

swift & iOS/swift 2022.01.20

[swift] 옵셔널 optional 타입을 다루는 5가지 방법

https://www.udemy.com/course/ios-13-app-development-bootcamp/ 요새 이 강의도 들으면서 공부하고 있는데 여기에서 옵셔널 타입을 다루는 방법을 잘 알려준 부분이 있어서 기록으로 남긴다. 분명 다음 주에 내가 다시 볼 듯... 1. forced unwrapping (! 키워드 사용, 강제로 옵셔널 벗기기) ! 키워드를 사용하여 옵셔널을 벗겨내는 방법인데 이 방법은 옵셔널 값이 nil인지 실제로 어떤 값이 있는 것인지 확인하지 않고 무조건 벗기기 때문에 안전하지 않다. 옵셔널 nil을 강제로 옵셔널을 벗기려고 하면 프로그램이 에러를 내뿜으며 종료되어 버린다. 켁 let num: Int? num = 10 // Optional(10) let anotherNum = ..

swift & iOS/swift 2022.01.20

[swift] 소수점 둘째 자리 까지 나타내기 (feat. round(), String)

소수점 둘째 자리, 셋째 자리, ... n째 짜리 까지 나타내고 싶을때는 10의 제곱수와 round 메소드를 이용하거나 String(struct)을 이용하는 방법이 있다. 먼저 10의 제곱과 round를 이용하여 바꾸는 방법은, 1. 10의 n제곱을 먼저 곱한다. 2. 1을 round() 로 감싸서 정수로 만든다. 3. 2를 10의 n 제곱으로 나눈다. let x = 1.2974605 // 둘째 자리까지만(1.29) 표시하기 let twoDecimal = round(x * 100) / 100 // x * 100 는 129.74605 // round(x * 100) 는 129 // round(x * 100) / 100 은 1.29 // 셋째 자리까지만(1.297) 표시하기 let threeDecimal =..

swift & iOS/swift 2022.01.20

[swift] 중첩 함수 (nested functions)

https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID178 스위프트 공식문서의 Functions 챕터에도 나오지만 흔히 말하는 함수는 대부분 글로벌 함수일 것이다. 어디서나 호출할 수 있는 함수이다(global scope). 중첩 함수는 이름처럼 함수 안에 작성하는 함수를 말한다. 아래처럼 chooseStepFunction 함수(글로벌 함수) 안에 작성된 함수들이 모두 중첩 함수 nested function이다. chooseStepFunction 함수는 chooseStepFunction() 처럼 호출할 수 있지만 중첩 함수들은 chooseStepFunction 함수 안에서만 호출할 수 있다. // 출처: https://docs.swift.o..

swift & iOS/swift 2022.01.19

parameter vs argument

(이건 프로그래밍 언어 전반적으로 사용되는 용어지만.... ) parameter: variable in the function definition ( 함수 내부에서 사용되는 변수) argument: input at function call (함수 호출할 때 전달하는 값) 매개변수, 인자라고도 부르는데 영어로 된 걸 한글로 바꾸면 더 헷갈려서 그냥 영단어를 사용하는 게 나은 것 같다 func add(x: Int, y: Int) { print(x + y) // x, y는 파라미터. 파라미터 x, 파라미터 y 라고 부름 } add(x: 10, y: 10) // 여기서 argument로 각각 10을 전달

swift & iOS/swift 2022.01.16

[swift] 클로저 closure (feat. 함수)

스위프트의 함수는 '1급 객체'이다. 1급 객체의 특징은 다음과 같다. - 변수에 저장할 수 있음 - argument로 전달할 수 있음 - 리턴값으로 사용할 수 있음 제목은 클로저라고 써놓고는 왜 함수를 얘기하냐면 함수도 결국 클로저였기 때문이다. 스위프트 공식 문서에 아래처럼 나와있다. 출처: https://docs.swift.org/swift-book/LanguageGuide/Closures.html Global and nested functions, as introduced in Functions, are actually special cases of closures. Closures take one of three forms: Global functions are closures that have..

swift & iOS/swift 2022.01.16

[swift] 함수에 함수를 전달하거나 함수를 리턴하거나

swift에서 함수는 1급 객체(first class object)이기 때문에 함수를 변수에 담거나, 다른 함수에 argument로 전달하거나 리턴값으로 사용할 수 있다. (자바스크립트도 마찬가지...) 그래서 아래 같은 것도 할 수 있다.. func x(n: Float) { print("x: \(n)") } func add(num: Int, printFloat: (Float) -> Void) { let n = Float(num) printFloat(n) return } add(num: 7, printFloat: x) 또는 함수를 리턴할 때에는... func test() -> (String) -> String { // String을 받고 String을 리턴하는 함수를 리턴 // ... } 화살표가 여러 ..

swift & iOS/swift 2022.01.16

[swift] 함수에 여러 개의 argument 넣기(...)

스위프트 공식문서의 functions에서 variadic parameters 부분을 참고하였다. https://docs.swift.org/swift-book/LanguageGuide/Functions.html variadic 라는 단어를 네이버 사전에서 찾아보았는데 이 단어 자체가 '임의의 여러 개의 argument를 취하는(taking many arguments)' 뜻인 것 같다. var...로 시작하는게 vary, various, variety 계열의 의미이겠거니 추측은 했지만. https://en.dict.naver.com/#/search?query=Variadic&range=all 스위프트 함수에서 argument를 많이 전달할 수도 있다. 몇 개 전달할 지는 모르겠는데 한 개는 아니고 하여튼 여..

swift & iOS/swift 2022.01.16

[swift] guard...else...

https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html 출처는 위 swift 공식문서의 Control Flow에서 Early Exit 부분이다. 아래의 설명과 예시는 모두 위 주소에서 가져온 것이다. guard는 if문에서 else 부분에 해당한다. if문은 조건이 참이면 if 부분이, 거짓이면 else 부분이 실행되는데 guard는 그 반대라고 볼 수 있다. guard 조건이 거짓이면 guard문의 else {...} 부분이 실행되고 참이면 else {...} 다음으로 나오는 부분이 실행된다. 공식문서에서 나오기를 if {...} else {...} 보다 guard를 사용하는 것이 더 읽기 편하다고 한다. (가독성 좋음) 자바스크립트 할때도 ..

swift & iOS/swift 2022.01.16

[swift] switch문 case에 조건 달기 (where 키워드)

https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID134 swift 공식문서에서 switch where 키워드 관련 부분 swift의 switch 문에서는 아래처럼 case에 tuple을 사용할 수도 있고 변수에 튜플 값을 바인딩 할 수도 있고(x, y에 튜플 값이 하나씩 들어감) where 키워드를 사용하여 case 안에서 또 다른 조건을 추가할 수 있다. // 출처: https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID134 let yetAnotherPoint = (1, -1) switch yetAnotherPoint { case let(x,y) where x ==..

swift & iOS/swift 2022.01.16