সুইফ্ট ডকুমেন্টেশন বলছে যে ক্লাস , স্ট্রাক্ট এবং এনামগুলি সমস্তই প্রোটোকলের সাথে সামঞ্জস্য করতে পারে এবং আমি এমন একটি পয়েন্টে পৌঁছতে পারি যেখানে তারা সকলে মিলে। তবে আমি ক্লাস এবং কাঠামোর উদাহরণগুলির মতো আচরণ করার জন্য এনামকে পেতে পারি না :
protocol ExampleProtocol {
var simpleDescription: String { get set }
mutating func adjust()
}
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
enum SimpleEnum: ExampleProtocol {
case Base
var simpleDescription: String {
get {
return "A Simple Enum"
}
set {
newValue
}
}
mutating func adjust() {
self.simpleDescription += ", adjusted"
}
}
var c = SimpleEnum.Base
c.adjust()
let cDescription = c.simpleDescription
simpleDescription
কল করার ফলে কীভাবে পরিবর্তন ঘটানো যায় তা আমি খুঁজে পাইনি adjust()
। আমার উদাহরণটি অবশ্যই স্পষ্টভাবে তা করবে না কারণ গ্রাহকটির একটি হার্ড-কোডড মান রয়েছে তবে আমি কীভাবে সেই মানটির সাথে মান simpleDescription
মেনে চলব ExampleProtocol
?