Economiser le code avec Swift

1. Trier une liste de strings :

let sorted = ["charlie", "bravo", "alpha", "delta"].sorted(by: <)

2. Somme d'une liste de numéros :

let total = [1,5,3,7,9,2].reduce(0, +)

Réponses

  • Une autre, une autre, encore ..

  • J'avais trouvé ce genre de code à  cette adresse :


     


    https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/


     


    impressionnant ce qu'il est possible de faire avec une seule instruction !


     


    A+


  • Il y a aussi FORMAT C: sous MS-DOS, un max d'effet avec un minimum de code ..

  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2017 modifié #5

    Et si tu veux créer tes propres opérateurs :



    precedencegroup ExponentPrecedence
    {
    associativity: left
    higherThan: AdditionPrecedence
    }

    infix operator ** : ExponentPrecedence


    func **(num: Double, power: Double) -> Double
    {
    return pow(num, power)
    }

    func test()
    {
    let raised = [1,2,3,4,5].map{$0 ** 3}
    }


    func test()
    {
    let raisedTotal = [1,2,3,4].reduce(2, **)
    }
  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2017 modifié #6


    Il y a aussi FORMAT C: sous MS-DOS, un max d'effet avec un minimum de code ..




     


    Il y a une vingtaine d'ans, je travaillais comme consultante pour un seul jour avec une grosse entreprise nationale et, tout d'un coup, un mec s'est précipité dans la pièce en disant qu'il a tapé del *.* . Pas grave on pourrait dire mais le dossier actuel était c:\  ::)




  • Il y a une vingtaine d'ans, je travaillais comme consultante pour un seul jour avec une grosse entreprise nationale et, tout d'un coup, un mec s'est précipité dans la pièce en disant qu'il a tapé del *.* . Pas grave on pourrait dire mais le dossier actuel était c:\  ::)




     


    Un grand classique !



  • 1. Trier une liste de strings :

     



    let sorted = ["charlie", "bravo", "alpha", "delta"].sorted(by: <)



    NB ce tri ne tient pas compte des majuscules 



    let sorted = ["charlie", "bravo", "alpha", "Zoulou", "zoulou", "delta"].sorted(by: <)

    ["Zoulou", "alpha", "bravo", "charlie", "delta", "zoulou"]


  • Il y a aussi FORMAT C: sous MS-DOS, un max d'effet avec un minimum de code ..




    Le pire étant FDISK qui procédait à  un formatage bas niveau, le FORMAT et le DEL étaient encore récupérable.


    Salut les vieux  

  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2017 modifié #10


     


    NB ce tri ne tient pas compte des majuscules 



    let sorted = ["charlie", "bravo", "alpha", "Zoulou", "zoulou", "delta"].sorted(by: <)

    ["Zoulou", "alpha", "bravo", "charlie", "delta", "zoulou"]



     


    Dans ce cas là  on a la choix :



    let sorted = ["charlie", "bravo", "alpha", "Zoulou", "zoulou", "delta"].sorted{ $0.localizedCaseInsensitiveCompare($1) == .orderedAscending }

    qui donne - ["alpha", "bravo", "charlie", "delta", "Zoulou", "zoulou"]


     


    ou



    let sorted = ["charlie", "bravo", "alpha", "Zoulou", "zoulou", "delta"].sorted{ $0.localizedStandardCompare($1) == .orderedAscending }

    qui donne - ["alpha", "bravo", "charlie", "delta", "zoulou", "Zoulou"]


  • Joanna CarterJoanna Carter Membre, Modérateur
    juillet 2017 modifié #11

    Il faut se souvenir que, avec Swift, il y a des nouveaux APIs pour faire les recherches, comparaisons, etc, en ignorant les maj/min et les accents ; comme :



    let filtered = ["café","cafè","cafe"].filter{ $0.localizedStandardContains("e")}

    qui donnera - ["café", "cafè", "cafe"]


     


    Mais :



    let filtered = ["café","cafè","cafe"].filter{ $0.contains("e") }

    ne donnera que - ["cafe"]


     


    Et, pour le triage :



    let sorted = ["café","cafè","cafe"].sorted{ $0.localizedStandardCompare($1) == .orderedAscending }

    qui donne - ["cafe", "café", "cafè"]


     


    Mais :



    let sorted = ["café","cafè","cafe"].sorted{ $0.compare($1) == .orderedAscending }

    donne - ["cafe", "cafè", "café"]


     


    Il faut faire attention avec ça !


     


    Pour avoir le bon classement, il faut utiliser localisedStandardCompare  8--) 


Connectez-vous ou Inscrivez-vous pour répondre.