Maggiore o identico a?

3

Mentre sfogliavo il mio codice in un linguaggio debolmente tipizzato, vedevo che mi ero allenato a usare l'identità ( === ) dove logico. Poi mi sono imbattuto in un maggiore (o minore) o uguale a ( >= ), e mi ha fatto chiedere ... perché non c'è "maggiore o uguale a"? Suppongo che sarebbe >== . Ad esempio ...

5 == 5    // true
5 === 5   // true
5.5 >= 5  // true
5.5 >== 5 // false
6 >= 5    // true
6 >== 5   // true

Fondamentalmente, avrei lanciato un falso se fosse di un tipo diverso. Per esempio, se voglio controllare se $ x è maggiore di $ y, ma voglio che siano entrambi interi (o float, ma senza mixaggio), allora non avrebbe senso avere una singola chiamata che possa fare tutto quello, piuttosto che dover controllare separatamente per vedere se erano dello stesso tipo?

Un rapido google ha indicato che questo potrebbe non esistere in nessuna lingua; perchè no? Non è così utile come potrei pensare che sia? :)

    
posta Andrew 27.01.2011 - 22:38
fonte

2 risposte

1

A prima vista sembra che questa sia un'inadeguatezza in un linguaggio che usa === (gli esempi sono in JavaScript):

5 == "5" // true
5 === "5" // false
5 >= "5" // true

Tuttavia, due cose:

  1. In PHP, ci sono poche istanze in cui un numero string non viene convertito automaticamente in un tipo numerico. (Vedi la mia risposta sul casting in PHP )

  2. L'uso di === con i numeri non è così utile - dopo tutto, la conversione implicita è una funzione di digitazione debole che è solitamente desiderabile. L'uso più frequente di molto sta assicurandoti di ottenere il giusto confronto con tutti i valori " falso " - null , undefined , 0 , false , "" .

risposta data 28.01.2011 - 01:09
fonte
4

Penso che un tale operatore sarebbe troppo confuso mescolando i concetti di ordinamento logico e identità dell'oggetto. Una corretta implementazione di > = e < = dovrebbe comunque tenere conto di questo scenario. Forse ho sbagliato, è da un po 'che non uso PHP.

    
risposta data 27.01.2011 - 22:46
fonte

Leggi altre domande sui tag