Untitled
unknown
plain_text
a year ago
1.3 kB
10
Indexable
final class VM {
func executeSalaryCalculation() {
var employee: Employee? = Employee(name: "John Doe", baseSalary: 50000, bonus: 5000)
employee?.setCalculationHandler { salary in
print("Handler received salary: \(salary)")
}
employee?.calculateTotalSalary()
employee = nil
}
}
class Employee {
var name: String
var baseSalary: Double
var bonus: Double
var calculationHandler: ((Double) -> Void)?
init(name: String, baseSalary: Double, bonus: Double) {
self.name = name
self.baseSalary = baseSalary
self.bonus = bonus
}
func calculateTotalSalary() {
let handler = self.calculationHandler!
DispatchQueue.main.async {
DispatchQueue.main.sync {
let totalSalary = self.baseSalary + self.bonus
handler(totalSalary)
}
}
}
func setCalculationHandler(handler: @escaping (Double) -> Void) {
self.calculationHandler = { [weak self] salary in
self?.handleSalaryCalculation(salary)
}
}
private func handleSalaryCalculation(_ salary: Double) {
print("Calculated salary for \(name) is \(salary)")
}
deinit {
print("\(name) is being deinitialized")
}
}Editor is loading...
Leave a Comment