• [^] # Re: Microsoft va-t-il LIBÉRER .net ?

    Posté par (site web personnel) . En réponse à la dépêche Tomboy vs Gnote. Évalué à 2.

    tu peux toujours ajouter une surcouche dans un un langage dynamique pour faire de l'inférence de type même si ce n'est pas un mécanisme par défaut.
    L'inférence de type est évidemment possible en Python, mais c'est fait en "live" par l'interpréteur : aucun intérêt, c'est le fonctionnement de base de Python.
    En C# l'intérêt est d'avoir cette inférence par le compilateur : garantie du typage et complétion en live. Le screenshot de Microsoft est explicite.
    Les liens que tu montres montre uniquement qu'on peut avoir la même bibliothèque que LINQ : oui LINQ c'est aussi une bibliothèque de requétage qui peut être reproduit dans n'importe quelle plateforme. Mais c'est aussi une intégration native de la syntaxe dans le langage, ce que ne propose absolument pas Python.

    del myDelegate = x => x * x;
    Tu ne peux pas écrire celà, tu dois expliciter le type en C# :
    Func<int, int> myFunc = x => x * x;
    Bref, il n'y a aucune confusion sur le typage.

    L'intérêt, c'est de pouvoir passer facilement du code plutôt que des références en paramètre de méthodes :
    public void IterateOnList(List maList, Action action)
    {
    // code ici
    }

    En Java tu devrais déclarer une classe qui implémente une interface avec une méthode dedans.
    Ce qui serait parfaitement inutilisable dans une API du style de LINQ où la plupart des clauses (OrderBy, Where, Select, etc.) prennent une expression en paramètre.

    Tu ne peux pas avoir de type anonyme dans la déclaration d'une fonction dans JAVA.
    En C# non plus, je te rassures. Un type anonyme est juste un type dont l'on n'a pas besoin d'avoir le nom. Il a un nom interne pour le compilateur pour le suivre comme n'importe quel autre type, mais il évite au développeur de déclarer un type alors qu'il veut juste un type temporaire pour stocker le résultat d'une requête.
    Le type anonyme reste un type à part entière : le compilateur vérifie son utilisation plus bas, l'IDE propose toujours la completion.

    Bref, en Java une API similaire serait extrêment lourde à l'utilisation sans modification du langage. C# a évolué justement pour rendre cette API utilisable et productive.