Il n'y a pas de syntaxe équivalente, autant que je sache. En ce qui concerne les techniques équivalentes, théoriquement, vous pourriez utiliser des fermetures et définir des structures et des classes à l'intérieur de celles-ci. Malheureusement, je ne peux pas obtenir cela pour travailler dans un terrain de jeu ou un projet sans le faire s'écraser. Très probablement, ce n'est pas prêt à être utilisé dans la version bêta actuelle.
Quelque chose comme ...
protocol SomeProtocol {
func hello()
}
let closure :() ->() = {
class NotSoAnonymousClass : SomeProtocol {
func hello() {
println("Hello")
}
}
let object = NotSoAnonymousClass()
object.hello()
}
... cette erreur génère actuellement:
invalid linkage type for global declaration
%swift.full_heapmetadata* @_TMdCFIv4Test7closureFT_T_iU_FT_T_L_19NotSoAnonymousClass
LLVM ERROR: Broken module found, compilation aborted!
Command /Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 1
Ne ressemble pas à ça. Les classes anonymes sont l'une de mes fonctionnalités Java préférées, donc j'espère que nous les aurons finalement dans Swift. – hpique
@hpique Vrai, ils sont bons en Java mais ils ne sont pas vraiment nécessaires dans les langages qui ont des fermetures et des classes qui peuvent être déclarées dans les méthodes. Tous les modèles d'écouteurs/adaptateurs en Java peuvent être implémentés facilement en utilisant des fermetures, sans classes anonymes. – Sulthan
@Sulthan Certainement, vous pouvez faire beaucoup avec des fermetures et des classes internes. Mais avec l'utilisation intensive des protocoles dans Swift, je pense que les cours anonymes pourraient être très pratiques dans certaines situations. – hpique