Envoyé par la D Language Foundation
Envoyé par la D Language Foundation
Code Objective-C : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | extern (Objective-C) class NSObject { static NSObject alloc() @selector("alloc"); NSObject init() @selector("init"); void release() @selector("release"); } extern (Objective-C) class Foo : NSObject { override static Foo alloc() @selector("alloc"); override Foo init() @selector("init"); int bar(int a) @selector("bar:") { return a; } } void main() { auto foo = Foo.alloc.init; scope (exit) foo.release(); assert(foo.bar(3) == 3); } |
La D Language Foundation prévient à ce propos que « pour mieux faciliter l'interaction entre les deux langues, ces classes ont un comportement légèrement modifié. Toutes les méthodes statiques et finales d'une classe extern (Objective-C) sont virtuelles. »
L’autre nouveauté en ce qui concerne l’interfaçage avec le langage Objective-C est qu’il est désormais possible de déclarer des variables d’instance au sein de classes Objective-C – ainsi qu’à l’intérieur d’une méthode contenue dans une classe Objective-C – pour effectuer un appel spécial.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | extern (Objective-C) class NSObject { void release() @selector("release"); } extern (Objective-C) class Foo : NSObject { // instance variable int bar; int foo() @selector("foo") { return 3; } int getBar() @selector("getBar") { return bar; } } extern (Objective-C) class Bar : Foo { static Bar alloc() @selector("alloc"); Bar init() @selector("init"); override int foo() @selector("foo") { // super call return super.foo() + 1; } } |
Envoyé par la D-Language Foundation
La dernière mouture du compilateur de référence du langage D vient avec deux améliorations en ce qui concerne l’interfaçage avec la bibliothèque standard du C++. Noter à ce propos que les programmes D pourront désormais allouer de la mémoire à partir du heap C++, ce, en s’appuyant sur les opérateurs new et delete. Enfin, la version 2.085 donne l’accès aux conteneurs de la STL par le biais de la classe std::allocator<T> exposée via un module C++.
Source : dlang
Et vous ?
Que pensez-vous des nouvelles fonctionnalités livrées avec cette version du compilateur de référence pour le langage D ?
Avez-vous déjà fait usage du langage D ? Si oui, pour quelle raison devrait-on s'y intéresser ?
Voir aussi :
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
Débuter avec le langage D, un tutoriel de Sébastien Tahier