*메서드 (Methods)*는 특정 타입과 연관된 함수입니다. Swift에서는 클래스, 구조체 또는 열거형을 정의하는 여부를 선택할 수 있으며, 사용자가 만든 타입에 대한 메소드를 유연하게 정의 할 수 있습니다.
인스턴스 메소드는 특정 클래스, 구조체 또는 열거형의 인스턴스에 속하는 함수
class Sopt {
var name: String = "누구누구"
init(name: String) { // self는 무엇일까요?
self.name = name
}
func sayHello() {
print("안녕 솝린이!!")
}
func sayHelloSoptMember(name: String) -> String {
print("안녕 \\(name)? 솝트는 처음이지?")
return name
}
func changeName() {
name = "희재"
}
}
let hidi: Sopt = .init(name: "희디")
hidi.sayHello()
hidi.sayHelloSoptMember(name: hidi.name)
hidi.changeName()
struct Sopt {
var name: String = "누구누구"
init(name: String) {
self.name = name
}
func sayHello() {
print("안녕 솝린이!!")
}
func sayHelloSoptMember(name: String) -> String {
print("안녕 \\(name)? 솝트는 처음이지?")
return name
}
func changeName() { // error -> 왜 나는지 아래서 확인해보자구용!
name = "희재"
}
}
let hidi: Sopt = .init(name: "희디")
hidi.sayHello()
hidi.sayHelloSoptMember(name: hidi.name)
hidi.changeName()
// enum은 저장 프로퍼티가 없어서 연산 프로퍼티에 접근하는 방향으로 정리했당!
enum Sopt {
case plan
case design
case web
case ios
case android
case server
var part: String {
switch self {
case .plan:
return "기린이"
case .design:
return "디린이"
case .web:
return "웹린이"
case .ios:
return "아요미"
case .android:
return "안요미"
case .server:
return "섭요미"
}
}
func sayHello() {
print("안녕 \\(part)야 솝트는 첨이지?")
}
}
let hidi = Sopt.ios
hidi.sayHello()
타입의 모든 인스턴스에서는 "self"라는 암시적 프로퍼티를 가진다. 이는 인스턴스 자신과 정확하게 동일합니다.
self프로퍼티를 사용하여 자체 인스턴스 메소드 내에서 현재 인스턴스를 참조할 수 있습니다.