arduino / arduino/ArduinoCore-API
String relational operators are members.
- Vorherrschende Sprache
- C++
- Sterne
- 306
- Forks
- 150
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Member relational operators are no good because they cause the lhs and rhs to be treated differently. This causes problems such as making == appear non-commutative. Such as:
```c++
void setup() {
String("hi") == "world";
"world" == String("hi");
}
```
```
sketch_jan19a:3: error: no match for 'operator==' (operand types are 'const char [6]' and 'String')
"world" == String("hi");
^
exit status 1
```
It would be less user-surprising to bring these operators out of the class.
I propose defining them at namespace scope as symmetric pairs of operators, between a String on one side, and everything String accepts as an implicit conversion on the other side, per:
http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Verwende die beiden C++-Ausdrücke im Issue als erste Reproduktion; suche dann die Deklarationen der relationalen Operatoren von String in ArduinoCore-API. Vergleiche beide Operandenreihenfolgen und prüfe das bestehende Verhalten von String; als erledigt gilt es, wenn äquivalente Vergleiche kompiliert werden können und sich symmetrisch verhalten, mit einer Abdeckung für den gemeldeten Fall.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- api, embedded-iot
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100