Page 1 sur 1

Différence entre + et & :: concaténation de chaîne

MessagePublié: 23 Nov 2009 à 14:59
par oguruma
exemple 1
dim A as string
dim B as integer
dim C as string

A="lapins"
B=2
c= B + " " + A
==> provoquera une erreur
il faut donc faire
c= cstr(B) + " " + A
=> OK

on peut aussi fare
c= str$(B) + " " + A
mais le str$() ajout un blanc de tête pour la gestion du signe - ici transparent car comme en math le signe est ignoré par défaut sauf dans l'ensemble Z où le spécifie

dans les view basic (le basica ou gwbasic)le cstr n'existait et on se faisait tous un bon vieux DefFN cstr=(.........) [années 80....]

ou
c= B & " " + A
==> OK le & fait conversion de B en alpha

MessagePublié: 26 Nov 2009 à 23:57
par Jérome Deniau
Voui mais côté perf:
cstr(B) + A est 1000000 fois plus performant que B & A
car dans B & A, LotuSscript va:
- Analyser le type des toutes les variables de l'expression
- Convertir toutes les variables en chaine si nécessaire, mais comme il est nul, il va les transformer en variant contenant des chaînes
- les concaténer

Avec le Plus, ben il fait plus....... si chaine + chaine cela fait chaine si double +chaine = se gauffre, si nombre +variant (si variant peut être convertit en nombre on a nombre sinon on gauffre (NAN)).

MessagePublié: 04 Déc 2009 à 10:51
par oguruma
il est évident parfois que les choses les plus simples se paient et tout à un prix il faut donc fixer le niveau de perf attendu
si c'est dans l'affichage d'un simple message d'erreur le & convient bien
bien sûr si des concaténations en masse dans une boucle de traitement qui explore des milliers de documents, je suis bien d'accord avec toi que + et cstr est recommandé et c'est aussi ma méthode

le but était de répondre à la question posé

je pense que tout est dit sur ce sujet