Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1551 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10
Auteur Sujet :

[Langage D]C++ + Java + Python = D

n°2149580
gilou
Modérateur
Modzilla
Posté le 16-07-2012 à 22:49:21  profilanswer
 

Reprise du message précédent :
Smalltalk, welcome back! :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 16-07-2012 à 22:49:21  profilanswer
 

n°2149585
deadalnix
Posté le 17-07-2012 à 00:14:05  profilanswer
 

el muchacho a écrit :

OK, merci, j'ai lu tout ça. La solution retenue, c'est effectivement de virer les 4 méthodes opEquals, hashCode, opCmp et je ne sais plus quoi d'autre (toString() ?) de Object.
Ceci dit, si opCmp n'a pas de sens dans le cas général (elle devrait avoir un sens dans le cas d'objets implémentant l'interface Comparable), opEquals et hashCode ont tjrs un sens sur Object. C'est pourquoi l'idée d'une superclasse RawObject ne me parait a priori pas stupide.
Une partie des classes dériverait de RawObject tandis qu'une autre dériverait d'Object (qui lui-même dérive de RawObject).


 
opEquals n'a aucun sens. On parle bien ici d'égalité, pas d'identité. De plus, la signature de la fonction pose problème.
 
Pour ophash, idem, cela sert dans divers cas, comme par exemple les tableau associatifs. Mais ça n'a aucun sens de faire un tableau du type string[Object] . On veut tout le temps une clef plus précise.
 
On touche clairement aux limites du paradigme OOP la, et on ne gagne rien à faire rentrer les choses au pied de biche dans un paradigme.

n°2152548
gilou
Modérateur
Modzilla
Posté le 04-08-2012 à 00:00:46  profilanswer
 

D 2.060 (enfin!) releasé: http://dlang.org/changelog.html#new2_060
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2152549
el muchach​o
Comfortably Numb
Posté le 04-08-2012 à 08:27:16  profilanswer
 

Ouais, elle a mis du temps, celle-la. :)


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2152704
deadalnix
Posté le 06-08-2012 à 22:47:31  profilanswer
 

Normal, il y avait des changement importants à tester, et comme Walter n'utilise pas de branches . . .
 
Ça commence à me faire chier ce process de dev moisi.

n°2152744
gilou
Modérateur
Modzilla
Posté le 07-08-2012 à 10:41:47  profilanswer
 

deadalnix a écrit :

Normal, il y avait des changement importants à tester, et comme Walter n'utilise pas de branches . . .
 
Ça commence à me faire chier ce process de dev moisi.

Le processus de dev en place est tel qu'il est afin de permettre a Walter de tout contrôler, non? :whistle:  
A+,


Message édité par gilou le 07-08-2012 à 10:42:01

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2152895
deadalnix
Posté le 08-08-2012 à 12:58:59  profilanswer
 

C'est pas ça le problème (et walter ne contrôle tout que sur dmd, pas sur tout le reste).
 
Non le problème c'est que les fonctionnalité sont traitées de la même façon que les bug fixes, du coup, les bug fixes mettent 20 plombes à sortir puisqu'il faut attendre que les nouvelles fonctions soient prêtent aussi.
 
Et puis, comme une nouvelle fonction c'est inévitablement des bugs en plus, la bazars ne sera jamais stable. Heureusement, Andrei à l'air motivé pour faire bouger les choses sur ce plan la.

n°2152991
el muchach​o
Comfortably Numb
Posté le 09-08-2012 à 06:41:18  profilanswer
 

Walter est un programmeur qui entre dans la catégorie génie, mais il n'a jamais été un bon manager de projet. C'est pas son truc.
Et il fait confiance à la suite de test pour la non régression, mais je ne sais pas si elle est systématiquement mise à jour à chaque nouveau bug corrigé.
Ca ne réduit pas le nombre de bugs ni le "time to market" de ces bug fixes, mais il a quand même compris et apprécie l'apport massif de  la communauté dans le développement (sous l'impulsion d'Andrei et les multiples complaintes sur ce sujet), c'est la  principale progression de ces dernières années. Dans le compilo, Kenji Hara abat un travail de fou pour les bug fixes, et n'oublions pas Don Clugston non plus.

 

Mais ne râlons pas trop, ça s'améliore de jour en jour, il n'y a qu'à voir le nombre bugs corrigés à chaque release, et le compilo est vachement utilisable maintenant. Par rapport à il y a 2 ans, les choses se sont grandement améliorées. Il y a une dizaine d'années, les compilos C++ me paraissaient plutôt plus buggés que ça et on arrivait quand même à coder avec. C'est du coté de Phobos qu'il y a du chantier, et c'est plus chaud du fait du risque important de cassage de code. Et de l'outillage, où il n'y a pas eu de grand changement.


Message édité par el muchacho le 09-08-2012 à 07:10:36

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2153294
deadalnix
Posté le 14-08-2012 à 18:38:11  profilanswer
 

Ma propal sur les NullPointerError semble intéresser Andrei. Elle va entrer en tant que feature en opt-in dans druntime.
 
C'est assez controversé, et c'est vrai que ça peut poser des problèmes si cela se produit dans du code C (mais de toute façon, le programme aurait craché ou se serait retrouvé dans un état invalide sans ça, ça ne me parrait donc pas SI grave).

n°2153362
el muchach​o
Comfortably Numb
Posté le 15-08-2012 à 14:43:26  profilanswer
 

deadalnix a écrit :

Ma propal sur les NullPointerError semble intéresser Andrei. Elle va entrer en tant que feature en opt-in dans druntime.
 
C'est assez controversé, et c'est vrai que ça peut poser des problèmes si cela se produit dans du code C (mais de toute façon, le programme aurait craché ou se serait retrouvé dans un état invalide sans ça, ça ne me parrait donc pas SI grave).


Un lien ? :o


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
mood
Publicité
Posté le 15-08-2012 à 14:43:26  profilanswer
 

n°2153370
deadalnix
Posté le 15-08-2012 à 16:43:35  profilanswer
 
n°2153371
el muchach​o
Comfortably Numb
Posté le 15-08-2012 à 17:26:33  profilanswer
 
n°2153375
el muchach​o
Comfortably Numb
Posté le 15-08-2012 à 20:43:41  profilanswer
 

Le bug report 8542 de Timon Gehr [:rofl]
 

Citation :

With DMD 2.060, the following code compiles and runs correctly with dmd  
-version=A and dmd -version=B, but it fails to compile with
dmd -version=A -version=B
 
The code should compile and run correctly even when both version specifiers are
set.


Code :
  1. import std.stdio, std.algorithm, std.range, std.bigint;
  2. template Apply(alias a,T...){ alias a!T Apply; }
  3. auto fun(T)(T n, T function(T) i, T function(T) d){
  4.    return
  5.    (z=>((T delegate(T,T) delegate(T delegate(T delegate(T,T),T,T)) AOY)
  6.    =>((m,e)=>reduce!((a,b)=>AOY((f,a,b)=>z(a)?b:i(f(d(a),
  7.    b)))(a,b))(zip([(T[] a)=>a.map!((T x)=>m(i(i(n)),x)).array,(T[]
  8.    a)=>a.map!((T x)=>m(i(i(i(n))),x)).array,delegate(T[] a)=>a.map!
  9.    (a=>a).array].map!(a=>&Apply!(map!a,T[][])),[[i(n),i(i(n)),i(i(i(n))),
  10.    i(i(i(i(n)))),i(i(i(i(i(n))))),i(i(i(i(i(i(n))))))],[i(i(i(i(i(n))))),i(i(i(i(i(i(n)))))),i(i(i(i(i(i(i(n))))))),i(i(i(i(i(i(i(i(n)))))))),i(i(i(i(i(i(i(i(i(n))))))))),i(i(i(i(n))))],[e(n,i(n)),e(i(n),i(i(n))),e(i(i(n)),i(n))]]).map!(t=>t[0](t[1].map!(a=>[a,i(a),m(a,i(i(n)))]).array)).joiner.map!(a=>zip(a,retro(a)).map!(t=>AOY((f,a,b)=>z(a)?b:i(f(d(a),b)))(t[0],t[1]))).joiner.chain(repeat(
  11.    i(i(i(i(i(i(i(i(i(i(i(i(n))))))))))))).map!(a=>AOY((f,a,b)=>z(b)?a:f(d(a),d(b)))(a,i(i(i(i(i(i(i(i(i(i(i(i(i(n))))))))))))))).take(1))))((T a,T b)=>AOY((f,a,b)=>z(a)?n:AOY((g,a,b)=>z(a)?b:i(g(d(a),b)))(b,f(d(a),b)))(a,b),AOY((h,a,b)=>z(a)?z(b)?i(n):n:z(b)?n:h(d(a),d(b)))))((a){struct S{ T delegate(T,T) delegate(S) r;
  12.   } return
  13.    ((x)=>x(S(x)))((S x)=>(T u,T v)=>a(x.r(x),u,v)); }))((T a)=>a==n);
  14. }
  15. void main(){
  16.    version(A) assert(fun(0,(int a)=>a+1,(int a)=>a-1)==1337);  // <-- indeed :D
  17.    static inc(int[] a){
  18.        if(!a.length) return [1];
  19.        if(a[0]<0) return a[0..$-1];
  20.        return a~(a[$-1]+1);
  21.    }
  22.    static dec(int[] a){
  23.        if(!a.length) return [-1];
  24.        if(a[0]>0) return a[0..$-1];
  25.        return a~(a[$-1]-1);
  26.    }
  27.    version(B) assert(fun((int[]).init,&inc,&dec).equal(iota(1,1338)));
  28. }


Je me demande si c'est le jeune homme qui a obtenu la médaille d'or de Physique ici parce qu'apparemment, il est spécialisé en Physique et en Informatique (en plus d'être une brute en biologie aussi)...


Message édité par el muchacho le 15-08-2012 à 21:08:13

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2153443
deadalnix
Posté le 17-08-2012 à 01:17:00  profilanswer
 

Je ne sais pas si c'est le même, mais il est clairement intelligent. Un peu psychorigide aussi.

n°2154168
Iradrille
Posté le 24-08-2012 à 17:09:06  profilanswer
 

Hello,
 
Etant un grand fan du C++, j'ai décidé de jeter un oeil au D.
 
2/3 petites questions:
J'ai trouvé les specs de la version 1.0, mais apperement pas mal de choses ont changé: http://www.prowiki.org/upload/duser/spec_DMD_1.00.pdf
Les specs de la version actuelle sont bien la ? (enfin le site est bien maintenu à jour ?) http://dlang.org/language-reference.html
 
Niveau IDE, j'ai testé Code::Blocks et Visual Studio + Visual D, mais aucun des deux n'arrive à la cheville de Visual Studio + Visual Assist X (pour du c++)
Un bon IDE/plug in a proposer ? (Eclipse / NetBeans peut être ?)
Je code principalement sous Windows, mais ça me gène pas de passer sous Linux si un meilleur IDE y est dispo.

n°2154185
deadalnix
Posté le 24-08-2012 à 20:48:44  profilanswer
 

Niveau IDE, tu sera bien en dessous de ce que fait un visual studio pour du C++.
 
Le marché n'est clairement pas le même. Des effort sont fait en ce moment pour fournir des lib pour manipuler D et donc avoir de meilleurs IDE. Mais pour l'instant, tu as vu ce qui se fait.
 
Il existe un plugin eclipse qui envoie bien, mais il n'est plus maintenu (mais marche). Tu peux tester voir si ça te convient. Ça s'apelle Descent, tu peux voir ce que ça donne ici : http://www.youtube.com/watch?v=oAhrFQVnsrY .
 
Pour les specs, le site et The D Programing Language de Alexandrescu sont tes meilleurs outils.

n°2154247
deadalnix
Posté le 25-08-2012 à 16:49:21  profilanswer
 

Bon, je permet un peu de pub :D
 
http://www.deadalnix.me/2012/08/25 [...] ited-in-d/
 
Sur ce qu'on peut faire un peu en D pour remplacer cette grosse bouse de visitor pattern.

n°2154248
el muchach​o
Comfortably Numb
Posté le 25-08-2012 à 18:15:38  profilanswer
 

C'est sévèrement poilu, mais c'est bien intéressant. :)
Par contre, faut que tu te relises, parce que tes posts sont bourrés de fautes d'anglais et celui-la plus encore que les autres. Je me suis permis de corriger ton texte. Dis-moi si j'ai fait des erreurs de compréhension.

 
Citation :

OOP is known (or should be known) as a behavioral abstraction. It nicely solves a vast variety of problems, but enforces on the programmer an abstraction that doesn’t fit every problem. The fact is, you sometime need objects as data abstractions and not behavioral abstractions.*

 

This is commonly the case for tools that manipulate code. A parser typically returns an AST that will be processed. The processing can be compilation, code formating, code analysis, and basically any other use related to source code manipulation.

 

Following regular OOP principles, manipulations have to be implemented by the AST node classes. This is a problem, because it prevents any 3rd party developer tool to reuse an existing parser and AST. The known solution is to use the Visitor pattern, which allows to dispatch in our code according to the AST node’s type.

 

The Visitor pattern has many known problems, to the point that many consider it an antipattern. A better solution using D has to be proposed.

 

Let’s consider the following class hierarchy :

 

Finally, we need a way to call the right function in the visitor according to the class type. To do that, we use the virtual dispatch mechanism in each Node :

 

...

 

Now we can create any class implementing NodeVisitor and perform some specific processing according to the Node it encounters. Great ? In fact, this pattern has severe limitations.

 

First of all, you have quite a lot of code duplication. In every node, the same method  must be implemented. It is impossible for 3rd party tools to create their own Node implementations, because the Visitor will no be able to dispatch them accordingly. Or the NodeVisitor would have to be modified, which involves breaking all the Visitor implementations for Node that are not used. Secondly, each visitor has to implement something for all Nodes, even if it doesn’t make any sense. Lastly, you have no control on what is returned by the visit methods.

 

Compile time reflection will save us all !

 

Fortunately, D provides a very useful feature : compile time reflection. It allows code to be crafted according to reflection on other objects. We will implement a dispatch function that reflects a visitor object, and calls the correct method according to a parameter.

 

...

 

The dispatch function has 2 parameters : a visitor and an object that will be visited known as t. This object is passed in a polymorphic manner, so T is one of its base classes or an interface, not the actual type of t.

 

An alias parameter is used to specify the behavior to adopt when the visitor is unable to visit t. By default, an Exception is thrown.

 

So, the first thing that needs to be done is to get the object reference if T is an interface and get the typeid of the parameter. Then we skip the code that actually dispatches and fall back to the failing case.

 

....

 

Now we have the typeid of the object we want to dispatch. With reflection on the visitor, we can determine the method to call. But beforehand, an helper function is needed to cast t without having to perform the regular checks. They are useless because it already had to be done before anyway.

 

...
Now let’s get back to our dispatch. So we need to reflect the visitor to retrieve all its visit methods. Then we loop through all of them to find the one that has one parameter with the same type as t.

 

...

 

Note that the reflection is a compile time feature, so the foreach will be run at compile time too. In other terms, it will be unrolled. The code boils down to a series of ifs.

 

Now visitor can return anything. It doesn’t have to support every existing node type, and any node type can be added. In fact, most of the problems of the visitor pattern have gone away. By the way, we don’t have any accept method now, so let’s write one :

 

...

 

This is purely a syntaxic sugar method, because it is not needed anymore.

 

...
And voila ! You can do any processing, and return anything from the processing on the node, without the code repetition and the usual limitations of the visitor pattern.

 

Obviously, this is likely to be slower, because of all the if's done. On the other hand, you avoid the double virtual dispatch, so it is likely to be a win if you don’t have a lot of node types. In the general case, expect it to be slower.

 

It is definitively possible to precompute an associative array of methods to call at program startup, which will reduce the dispatch to an AA lookup an an indirect function call. The current implementation doesn’t do this.

 

* je n'ai pas compris ce premier paragraphe

 

Sinon, comme remarque, tu devrais expliquer brièvement les fonctionnalités et les éléments syntaxiques spécifiques à D (et non devinables facilement) dans le code, afin que le post soit compréhensible par les gens qui ne connaissent pas bien le langage.


Message édité par el muchacho le 25-08-2012 à 19:19:14

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2154253
deadalnix
Posté le 25-08-2012 à 19:32:20  profilanswer
 

OK, J'ai repris tes changement, c'est bien mieux ainsi ! En fait, je l'ai poussé rapidement car ça faisait des plombes que je voulais le poster et que j'avais rien écris. Par ailleurs, je fais malheureusement beaucoup de fautes en Français aussi. Ça craint.
 
Le premier paragraphe n'est pas bien compliqué. Quand tu fais de l'orienté objet, tu utilise une abstraction comportementale.
 
En d'autres termes, tu ne sait pas ce qu'il y a dans ton objet, tu appelles simplement des méthodes afin d'avoir un comportement. Le fait qu'il y ai des données dans l'objet est un effet de bord.
 
La, on fait tout l'inverse : on utilise les objets comme « conteneurs » et pas comme abstraction comportementale. On utilise les objets comme abstraction de données.

n°2154309
el muchach​o
Comfortably Numb
Posté le 26-08-2012 à 15:25:27  profilanswer
 

deadalnix a écrit :

OK, J'ai repris tes changement, c'est bien mieux ainsi ! En fait, je l'ai poussé rapidement car ça faisait des plombes que je voulais le poster et que j'avais rien écris. Par ailleurs, je fais malheureusement beaucoup de fautes en Français aussi. Ça craint.


:jap:
Tu as juste oublié le premier paragraphe (l'intro), et il est bourré de fautes. Après, l'article est bon pour reddit. :D


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2154529
deadalnix
Posté le 27-08-2012 à 15:37:11  profilanswer
 

C'est fait. Je te remercie encore pour ces corrections !
 
C'est partit dans le newsgroup de D.


Message édité par deadalnix le 27-08-2012 à 17:00:38
n°2154596
el muchach​o
Comfortably Numb
Posté le 28-08-2012 à 01:40:44  profilanswer
 
n°2154837
el muchach​o
Comfortably Numb
Posté le 28-08-2012 à 22:19:34  profilanswer
 

Un bon site, pour coller du code D en ligne, un peu comme pastebin, mais avec un compilo :
http://dpaste.dzfl.pl


Message édité par el muchacho le 28-08-2012 à 22:20:23

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2155126
Iradrille
Posté le 30-08-2012 à 18:50:47  profilanswer
 

A priori pas possible mais je demande quand même : possible de séparer la déclaration/définition d'une classe en D ? (.h / .cpp en c++)
Ça améliore pas mal la lisibilité du code je trouve.

n°2155141
el muchach​o
Comfortably Numb
Posté le 30-08-2012 à 22:06:22  profilanswer
 

Le compilo peut générer automatiquement des .di (D interfaces) mais perso, je ne vois pas en quoi ça améliore la lisibilité. Une interface peut servir d'équivalent de .h si vraiment c'est nécessaire.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2155234
deadalnix
Posté le 31-08-2012 à 16:54:10  profilanswer
 

Il faut ajouter que les di, c'est bien mais, ça empêche l'utilisation des CTFE et les templates ne peuvent pas être simplement déclarées (tout comme en C++).

n°2156141
el muchach​o
Comfortably Numb
Posté le 10-09-2012 à 07:18:33  profilanswer
 

Un jeu réalisé en 3 mois (!) par un étudiant doué, avec version avec et sans GC:
http://3d.benjamin-thaut.de/?p=20


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2156262
boblenain2​00
Posté le 10-09-2012 à 17:26:29  profilanswer
 

el muchacho a écrit :

Un jeu réalisé en 3 mois (!) par un étudiant doué, avec version avec et sans GC:
http://3d.benjamin-thaut.de/?p=20


Le mec a 9 ans d'expérience en moteur 3D quand meme (cf la discussion sur les forums Dlang)

n°2156823
deadalnix
Posté le 15-09-2012 à 00:53:03  profilanswer
 

Il faut aussi dire que le GC actuel est vraiment mauvais niveau performances.

n°2158287
deadalnix
Posté le 26-09-2012 à 16:23:00  profilanswer
 

Bon, ça bouge au niveau de D.
 
Les ComaExpressions vont être deprecated (c'est pas trop tôt). Andrei veut réorganiser pas mal de choses, j'attends de voir.
 
Pour ma part j'avance bien sur SDC, c'est toujours le sujet chantier, mais c'est normal, je m'attaque aux problèmes difficiles en premier, donc certains trucs de base ne marchent pas. Depuis quelques jours, je peut compiler les templates si les paramètres sont des types, ce qui est est une grande avancée.
 
Le but maintenant, c'est d'améliorer la façon dont les passes peuvent déférer des actions aux passes suivantes, afin de pouvoir attaquer les static ifs. Le second autre chantier c'est les CTFE (et la, le but c'est de faire du JIT, ce qui devrait dépoter un peu plus que ce qu'on a actuellement).
 
Par contre, les truc définis par l'implémentation de dmd, ça commence à me gonfler. Je me demande de plus en plus si je vais ne serait-ce qu'essaye d'être compatible sur certains points (ça serait dommage d'en arriver la, mais ça me gonfle).

n°2161173
el muchach​o
Comfortably Numb
Posté le 24-10-2012 à 07:29:17  profilanswer
 

La prochaine conférence D est financée via kickstarter.
Elle a besoin de votre aide !
http://www.kickstarter.com/project [...] nce-2013-0


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2168092
gilou
Modérateur
Modzilla
Posté le 14-12-2012 à 12:18:25  profilanswer
 

Bel article de Walter dans le Dr Dobbs: Porting the D Compiler to Win64
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2168197
el muchach​o
Comfortably Numb
Posté le 16-12-2012 à 06:30:06  profilanswer
 

Apparemment, Remedy Games (Max Payne, Alan Wake, Full Throttle) utiliserait D pour l'un de leurs nouveaux titres. Mais ils sont tarés, ils utilisent les user-defined attributes qui sont encore expérimentaux.


Message édité par el muchacho le 16-12-2012 à 12:47:59

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2168209
gilou
Modérateur
Modzilla
Posté le 16-12-2012 à 13:42:15  profilanswer
 

S'ils sortent un produit commercial écrit en D, ça va méchamment booster la réputation du langage.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2168225
BenO
Profil: Chercheur
Posté le 16-12-2012 à 22:15:47  profilanswer
 

Je l'aurais fait en go perso :o


---------------
Python Python Python
n°2168228
el muchach​o
Comfortably Numb
Posté le 17-12-2012 à 00:27:48  profilanswer
 

gilou a écrit :

S'ils sortent un produit commercial écrit en D, ça va méchamment booster la réputation du langage.
A+,


Ou pas. Tout dépend de leur write up. S'ils expliquent qu'ils ont galéré et que finalement, c'est plus simple en C++, l'effet sera plutôt l'inverse.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2168418
weblook$$
Posté le 17-12-2012 à 21:19:16  profilanswer
 

ils connaissent pas le c++ ?


---------------

n°2169160
el muchach​o
Comfortably Numb
Posté le 26-12-2012 à 07:54:26  profilanswer
 

UFCS + delegates
 

Code :
  1. import std.stdio;
  2. void times(int n, lazy void dg) {
  3.   while(n--) {
  4.     dg();
  5.   }
  6. } // times() function
  7. void main() {
  8.   10.times('D'.write); // here we use UFCS to call times() and write() the alternative way
  9. } // main() function


 
Sortie: DDDDDDDDDD


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2169205
el muchach​o
Comfortably Numb
Posté le 26-12-2012 à 18:23:25  profilanswer
 

Y'a pas à dire, le D, pour le ouaibe, ça trace, quand même.

 

http://vibed.org/temp/phobos/std/datetime.html

 

Un site utile pour ceux qui veulent expérimenter sans avoir à installer un compilateur D: http://dpaste.dzfl.pl/5eff658c


Message édité par el muchacho le 26-12-2012 à 18:29:57

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°2169225
deadalnix
Posté le 27-12-2012 à 13:10:06  profilanswer
 

Oui, j'aimerai sassez que les principes de vibe.d soient repris dans druntime.


Message édité par deadalnix le 28-12-2012 à 09:56:07
n°2169315
Iradrille
Posté le 29-12-2012 à 11:08:40  profilanswer
 

el muchacho a écrit :

UFCS + delegates
 

Code :
  1. import std.stdio;
  2. void times(int n, lazy void dg) {
  3.   while(n--) {
  4.     dg();
  5.   }
  6. } // times() function
  7. void main() {
  8.   10.times('D'.write); // here we use UFCS to call times() and write() the alternative way
  9. } // main() function


 
Sortie: DDDDDDDDDD


S'marrant comme syntaxe, ça marche même à l'envers (et ça devient totalement illisible par contre ^^)

Code :
  1. import std.stdio;
  2. void times(lazy void dg, int n) {
  3.   while(n--) {
  4.     dg();
  5.   }
  6. } // times() function
  7. void main() {
  8.   'D'.write.times(10); // here we use UFCS to call times() and write() the alternative way
  9. } // main() function


Probablement une question d'habitude mais la syntaxe "classique" reste quand même vachement plus claire.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10

Aller à :
Ajouter une réponse
 

Sujets relatifs
Upload en JAVA[Java] Architecture pipes-filters
[java] Tracer un rectangle en temps réel[Java] Aide sur projet avec interface graphique ( Pas des fenêtres)
[JAVA] Empecher la saisie dans une jtableimpossible d'éxécuter un programme en java !!!
programmation jeux java sur samsung Z300Envoyer des fichiers sur un FTP depuis un programme Java...
[java] Agrandir le contenu d'une tab en même temps que la tab[Java] Les hint
Plus de sujets relatifs à : [Langage D]C++ + Java + Python = D


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR