본문 바로가기

전체 글

(57)
20. Protocol Protocol 클래스와 구조체 같은 형식들이 프로토콜에 선언되어있는 멤버를 실제로 구현 반드시 프로토콜에 선언되어있는 필수맴버를 모두 구현해야 함 protocol ProtocolName { propertyRequirements methodRequirements initializerRequirements subscriptRequirements } protocol ProtocolName : Protocol, ... { } protocol Something { func doSomething() } Adopting Protocol enum TypeName : ProtocolName, ... { } struct TypeName : ProtocolName, ... { } class TypeName : SuperC..
2. Binary Search Binary Search Binary Search는 오름차순으로 정렬된 데이터의 배열에서 원하는 값을 찾는 알고리즘 배열 중간의 임의의 값을 선택하고 원하는 값을 비교하여 원하는 값이 중간 값보다 작으면 좌측 데이터의 중심 다시 데이터 값을 비교하고 원하는 값이 중간 값보다 크면 우측 데이터 중심에서 값을 비교하는 것을 반복하여 값을 찾는 과정 검색 원리상 정렬된 리스트에만 사용할 수 있다는 단점이 있으나 검색이 반복될 때마다 목푯값을 찾을 확률은 두 배가 되므로 속도가 빠르다는 장점 let numbers = [1, 2, 4, 6, 8, 9, 11, 13, 16, 17, 20] var hundred = [Int]() for i in 1...100 { hundred.append(i) } func binar..
1. Fizz Buzz Fizz Buzz FizzBuzz는 3의 배수에서 Fizz, 5의 배수에서는 Buzz, 3의 배수인 동시에 5의 배수에는 FizzBuzz를 출력하는 예제입니다 let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] var oneThousandNumbers = [Int]() for i in 1...1000 { oneThousandNumbers.append(i) } for num in oneThousandNumbers { if num % 15 == 0 { print("\(num) Fizz Buzz") }else if num % 5 == 0 { print("\(num) Buzz") }else if num % 3 == 0 { print("\(num)..
18. Initializer and Deinitializer Initializers init(parameters) { initialization } TypeName(parameters) 새로운 인스턴스를 생성하는 것은 초기화하고 부름, 인스턴스의 초기화를 담당하는 것은 Initializer라고 부름, 초기화의 목적은 모든 속성을 기본값으로 초기화해서 인스턴스를 기본상태로 만드는 것, 인스턴스가 정상적으로 초기화되었다는것은 모든속성이 기본값을 가지고 있다는 뜻 속성이 항상 동일한 값으로 초기화 된다면 선언과 동시에 기본값 저장, 파라미터를 활용하여 초기화를 저장할 때는 Initializer를 사용하여 저장 class Position { var x = 0.0 // 선언과 동시에 기본값 저장 var y : Double var z : Double? init() { y =..
17. Inheritance and Polymorphism Inheritance class Hierarchy 상속관계에 있는 클래스들은 클래스 계층을 구성 클래스 계층에서 가장 위에있는 클래스를 Root Class, Base Class라고 함 바로 아래에 있는 클래스는 Base Class를 상속 받고 상속관계에서 위에 있는 클래스를 Parent Class, Super Class라고 함 아래있는 클래스는 Child Class, SubClass 라고 함 Base Class아래에는 하나이상의 SubClass가 존재하지만 위쪽에는 Super Class 존재하지 않음 여러 SubClass가 공통적인 하나의 Super Class를 상속하는 것은 문제가 없음 2개 이상의 Super Class를 상속받는 것은 불가능 (Multiple Inheritance(다중상속)) Inhe..
16. Method and Subscript Method Instance Method 특정형식에 속한 함수, 인스턴스를 통해 호출, 함수는 특정형식에 연관되지않은 동작을 구현, 메소드는 특정형식에 연관된 동작을 구현, 클래스, 열거형 구조체에서 구현 가능, func name(parameters) -> ReturnType { Code } instance.method(parameters) class Simple { var data = 0 static var sharedData = 123 func doSomething() { print(data) Sample.sharedData } func call() { // 인스턴스 메소드에서 다른 인스턴스 메소드맴버에 접근할 때는 self를 생략하고 이름으로 접근 doSomething() } } let a = Sa..
15. Property Property 클래스, 구조체 안의 속성 Stored Properties var name : Type = DefaultValue let name : Type = DefaultValue class Person { let name : String = "John Doe" var age : Int = 33 } Explict Member Expression 인스턴스 다음 .을 통해 접근하고자 하는 속성에 접근 Dot Syntax(점 문법)이라고도 부르며 스위프트에서는 Explict Member Expression(명시적 멤버 표현식)이라고 부름 구조체 인스턴스를 상수에 저장하면 구조체에 포함된 모든 속성이 상수가 됨 -> 구조체의 가변선은 속성의 가변성에 영향을 줌 instanceName.propertyName..
14. Structure and Class Structure struct StructName { property method initalizer subscript } struct Person { var name : String var age : Int func speak() { print("Hello") } } let p = Person(name : "Steve", age : 50) p.name // Steve p.age // 50 p.speak() // Hello Class class ClassName { property method initalizer deinitializer subscript } class Person { var name = "John Doe" var age = 0 func speak() print("Hello") } } l..