Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'un opérateur =~

3 réponses
Avatar
Zainal
Bonjour à tous,

J'ai bien vu que l'on pouvais redéfinir un opérateur pour un type de donnée,
mais ce que je voudrais faire c'est en créer un nouveau. Est-ce possible ?

L'idée serait de créer l'opérateur présent en language perl =~ qui applique
une Regex directement sur la chaine de caractère qui est à gauche. Par
exemple :

if("machaine" =~ "[^0-9]*")
{
// TODO
}

Merci par avance
FEREYRE Matthieu

3 réponses

Avatar
OlivierH
Salut Zainal,

Pourquoi ne pas utiliser une fonction ?

Quel est l'interet d'un nouvel operateur dans ce cas ?

if(testRegEx("machaine","[^0-9]*")

{
// TODO
}


Olivier




Zainal a écrit :
Bonjour à tous,

J'ai bien vu que l'on pouvais redéfinir un opérateur pour un type de donnée,
mais ce que je voudrais faire c'est en créer un nouveau. Est-ce possible ?

L'idée serait de créer l'opérateur présent en language perl =~ qui applique
une Regex directement sur la chaine de caractère qui est à gauche. Par
exemple :

if("machaine" =~ "[^0-9]*")
{
// TODO
}

Merci par avance
FEREYRE Matthieu



Avatar
Zainal
Pour le plaisir. :)


"OlivierH" <"nospam[contact]" a écrit :

Salut Zainal,

Pourquoi ne pas utiliser une fonction ?

Quel est l'interet d'un nouvel operateur dans ce cas ?

if(testRegEx("machaine","[^0-9]*")

{
// TODO
}


Olivier




Zainal a écrit :
> Bonjour à tous,
>
> J'ai bien vu que l'on pouvais redéfinir un opérateur pour un type de donnée,
> mais ce que je voudrais faire c'est en créer un nouveau. Est-ce possible ?
>
> L'idée serait de créer l'opérateur présent en language perl =~ qui applique
> une Regex directement sur la chaine de caractère qui est à gauche. Par
> exemple :
>
> if("machaine" =~ "[^0-9]*")
> {
> // TODO
> }
>
> Merci par avance
> FEREYRE Matthieu
>



Avatar
Christophe Lephay
"Zainal" a écrit dans le message de news:

Pour le plaisir. :)


"OlivierH" <"nospam[contact]" a écrit :

Salut Zainal,

Pourquoi ne pas utiliser une fonction ?

Quel est l'interet d'un nouvel operateur dans ce cas ?

if(testRegEx("machaine","[^0-9]*")

{
// TODO
}


Zainal a écrit :
> Bonjour à tous,
>
> J'ai bien vu que l'on pouvais redéfinir un opérateur pour un type de
> donnée,
> mais ce que je voudrais faire c'est en créer un nouveau. Est-ce
> possible ?





On ne peut que redéfinir certains opérateurs. On ne peut pas en créer de
nouveaux. On ne peut pas non plus en changer la syntaxe (par exemple un
opérateur prenant deux paramètres ne peut pas être redéfini comme n'en
prenant qu'un seul).

Les opérateurs pouvant être redéfinis sont énumérés ici
http://msdn2.microsoft.com/fr-fr/library/8edha89s(vs.80).aspx

D'une manière générale, la redéfinition des opérateurs est intéressante
lorsqu'on définit des types ayant une sémantique de valeur (des structures,
de manière typique). Dans les autres cas, c'est plus souvent une source de
problèmes qu'autre chose, d'une part car c'est alors facilement
contre-intuitif, d'autre part (et surtout) parce que les opérateurs sont
static, et donc susceptibles de poser problème avec des objets polymorphes.