// 새로운 프로토콜을 선언하기
protocol Something {
// 메소드 선언하기
func doSomething()
}
struct Size: Something {
func doSomething() {
print("Love")
}
}
아래와 같이 class만 채택할 수 있고, Something을 채택할 수 있는 프로토콜을 만들어보자
protocol SomethingObject: AnyObject, Something {
}
struct Value: SomethingObject {
// 에러
}
class Object: SomethingObject {
func doSomething() {
<#code#>
}
}
기본 형식
protocol ProtocolName {
var name: Type {get set}
static var name: Type {get set}
}
protocol Figure {
var name: String { get }
}
위의 프로토콜은 get만을 선언하였기에 읽기만 가능해도 된다. 그리고 protocol 속 속성을 무조건 선언해줘야된다.
즉, 아래와 같은 struct들이 존재할 수 있다.
struct Rectangle: Figure {
// get만 있기에 읽기만 가능해도 된다.
let name = "Rect"
}
struct Triangle: Figure {
var name = "Triangle"
}
struct Circle: Figure {
var name: String {
return "Circle"
}
}
protocol Figure {
var name: String { get set }
}
protocol Figure {
static var name: String { get set }
}
protocol Resettable {
func reset()
}
class Size: Resettable {
var width = 0.0
var height = 0.0
func reset() {
width = 0.0
height = 0.0
}
}
protocol Resettable {
mutating func reset()
}
struct Size: Resettable {
var width = 0.0
var height = 0.0
mutating func reset() {
width = 0.0
height = 0.0
}
}
class Size: Resettable {
var width = 0.0
var height = 0.0
func reset() {
width = 0.0
height = 0.0
}
}
protocol Resettable {
static func reset()
}
class Size: Resettable {
var width = 0.0
var height = 0.0
func reset() {
width = 0.0
height = 0.0
}
static func reset() {
}
}
-> 이 파트는 다시 공부해보자
protocol List {
subscript(idx: Int) -> Int {get}
}
struct DataStore: List {
subscript(idx: Int) -> Int {
return 0
}
}
protocol List {
subscript(idx: Int) -> Int {get set}
}
struct DataStore: List {
subscript(idx: Int) -> Int {
get{
return 0
}
set{
}
}
}
protocol List {
subscript(idx: Int) -> Int {get}
}
struct DataStore: List {
subscript(idx: Int) -> Int {
get{
return 0
}
set{
}
}
}