SWIFT Property(2020.10.30)
16896 ワード
プログラムは、構造体、クラス、および列挙型の内部で実現することができる.
ただし,列挙型内部では演算プログラムしか実現できない.
演算プログラムはvarとしてのみ宣言できます.
定義#テイギ#
struct Student{
var name: String = ""
var `class`: String = "Swift"
var koreanAe: Int = 0
var westernAge: Int{
get{
return koreanAge -1
}
set(inputValue){
koreanAge = inputValue +1
}
}
}
// 타입 저장 프로퍼티
static var typeDescription: String = "학생"
/*
//인스턴스 메서드
func selfIntroduce(){
print("저는\(self.class)반 \(name)입니다.")
}
*/
// 읽기전용 인스턴스 연산 프로퍼티
// get 만 있으면 읽기 전용!! 쓰기 전용은 안됨!!
// 읽기전용!! 읽기/쓰기 전용 프로퍼티 이렇게 두종류가 있다.
var selfIntroduction: String {
get {
return "저는 \(self.class)반 \(name)입니다"
}
}
/*
// 타입 메서드
static func selfIntruduce(){
print("학생타입입니다.")
}
*/
// 읽기전용 타입 연산 프로퍼티
// 읽기전용에서는 get을 생략할 수 있습니다.
static var selfIntroduction: String {
return "학생타입입니다."
}
使用
// 타입 연산 프로퍼티 사용
print (Student.selfIntroduction)
//학생타입입니다.
//인스턴스 생성
var yagom: Student = Student()
yagom.koreanAge = 10
// 인스턴스 저장 프로퍼티 사용
yagom.name = "yagom"
print(yagom.name)
// yagom
// 인스턴스 연산 프로퍼티 사용
print(yagom.selfIntroduction)
// 저는 Swift반 yagom입니다.
print("제 한국나이는\()살이고, 미쿡나이는 \()살 입니다."
//제 한국나이틑 10살이고, 미쿡나이는 9살입니다.
適用
struct Money{
var currencyRate: Double = 1100
var dollar:Double = 0
var won: Double {
get{
return dollar * currencyRate
}
set{
dollar = newValue / currencyRate
// argument를 명시하지 않고 파라미터를 전달하면 newValue 키워드로 사용할수 있다.
}
}
}
var moneyInMyPocket = Money()
moneyInMyPocket.won = 11000
print(moneyinMyPocket.won)
// 11000
moneyInMyPocket.dollar = 10
print(moneyInMyPocket.won)
//11000
ゾーン変数
var a: Int = 100
var b: Int = 200
var sum: Int{
return a + b
}
print(sum) // 300
モニター
定義#テイギ#
struct Money{
// 프로퍼티 감사지 사용
var currencyRate : Double = 1100{
willSet(newRate){
print("환율이 \(currencyRate)에서 \(newRate)으로 변경될 예정입니다.")
}
didSet(oldRate){
print("환율이 \(oldRate)에서 \(currencyRate)으로 변경되었습니다.")
}
}
// 프로퍼티 감시자 사용
var dollar: Double = 0 {
// willSet의 암시적 매개변수 이름 newValue
willSet{
print("\(dollar)달러에서 \(newValue)달러로 변경될 예정입니다.")
}
// didSet의 암시적 매개변수 oldValue
didSet{
print("\(dollar)달러에서 \(newValue)달러로 변경되었습니다.")
}
}
}
// 연산 프로퍼티
var won: Double{
get {
return dollar * currencyRate
}
set{
dollar = newValue / currencyRate
}
/*
프로퍼티 감시자와 연산 프로퍼티 기능을 동시에 사용할 수 없습니다.
저장되는 값이 변경될때 호출이 된다. 그래서 사용할수 없다.
willSet{
}
didSet{
}
*/
}
使用
var moneyInMyPocket: Money = Money()
//환율이 1100.0에서 1150.0으로 변경될 예정입니다.
moneyInMyPocket.currencyRate = 1150
//환율이 1100.0에서 1150.0으로 변경되었습니다
// 0.0달러에서 10.0달러로 변경될 예정입니다.
moneyInMyPocket = 10
// 0.0달러애서 10.0달러로 변경 되었습니다.
print(moneyInMyPocket.won)
//11500.0
//프로퍼티 감시자의 기능은
//함수, 메서드, 클로저, 타입 등의 외부에 위치한
// 지역/전역 변수에도 모두 사용 가능합니다.
var a: Int = 100 {
willSet {
print("\(a)에서 \(newValue)로 변경될 예정입니다.")
}
didSet {
print("\(a)에서 \(newValue)로 변경되었습니다.")
}
}
//100에서 200으로 변경될 예정입니다.
a=200
// 100에서 200으로 변경되었습니다.
ソース:youtube“yagom”Reference
この問題について(SWIFT Property(2020.10.30)), 我々は、より多くの情報をここで見つけました https://velog.io/@michael00987/Swift-프로퍼티2020.10.30テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol