본문 바로가기

스피드 문법정리

(18)
10. Closures Closures Closures는 글로벌 스코프에서 단독으로 작성할 수 없음 { (parameters) -> ReturnType in statements } { statements } Closures에서는 argument label을 사용하지 않음 -> 아래 예시에서 str은 parameter 이름일 뿐 argument label이 아님, Closures호출시 argument label 사용하지 않음 argument위치에 직접 작성한 클로져를 인라인 클로져라고 함 -> 클로져 바디에 구현한 코드가 비교적 짧은 경우 인라인 클로져로 작성 let c = { print("Hello, Swift") } c() // "Hello, Swift" let c2 = { (str : String) -> String in ..
11. String and Character String and Character 스위프트는 만약 double, float, string, character와 같은 타입을 추론할 때 정확한 타입을 명시하지 않는 이상 큰 범위의 타입을 선택, character 타입의 경우 타입 어노테이션 하지 않는다면 문자열로 추론됨 let s = "String" let c : Character = "C" character의 경우 빈칸을 띄우면 빈 문자열로 인식되지만 문자열의 경우 길이를 보고 인식하기 때문에 빈 문자열을 만들기 위해서는 공백이 없어야 함 let empthyChar : Character = " " let empthyString1 = " " let empthyString2 = "" empthyString1.count // 1 empthyString2...
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..
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..