You cannot create anonymous classes this way in Swift, instead you should get a new class:
class AnotherPerson: Person {
override func speak(phrase: String) {
NSLog("\(phrase) overidden!")
}
}
The closest to anonymous instances that override certain methods is the speakproperty of the function:
class Person {
var speak: (String)->() = { (phrase: String) in
println(phrase)
}
}
let person = Person()
person.speak("Frank")
person.speak = { (phrase: String) in println("Hi, \(phrase)") }
person.speak("Frank")
, speak, let, :
class Person {
let speak: (String)->()
init(speaker: (String)->() = println) {
speak = speaker
}
}
Person().speak("Frank")
Person({ println("Hi, \($0)") }).speak("Frank")
let person = Person()
person.speak = { println($0) }
println, .