Ho letto che Dart non supporta l'overloading delle funzioni. Supporta il sovraccarico dell'operatore. Se sì, sarebbe gentile e mostrami come in un semplice esempio come è stato fatto. E quali sono alcuni vantaggi ecc. Sono nuovo alla programmazione. Grazie.Il dart supporta il sovraccarico dell'operatore
risposta
Sì La freccetta supporta il sovraccarico dell'operatore utilizzando la parola chiave dell'operatore seguita dall'operatore che si desidera sovraccaricare. Il seguente esempio sovraccarica il == operatore per il oggetto MiaClasse:
class MyClass {
operator ==(MyClass other) {
// compare this to other
}
}
quasi tutte freccette operatori built-in può essere sovraccaricato con poche eccezioni essendo l'operatore di assegnazione =
e riferimento equivalenza operator
===
(non esiste più).
Per quanto riguarda il vantaggio di overloading degli operatori permette di riutilizzare gli operatori che hanno un significato semantico noto come == o + per le operazioni sui vostri oggetti. Per esempio, se si dispone di una classe Matrix che sovraccarica l'operatore + poi si può aggiungere due matrici utilizzando la sintassi m1 + m2 al posto del più ingombrante m1.plus (m2)
potrebbe dirmi se 'altro' è qualcosa di speciale o potrebbe essere chiamato qualcos'altro. Ad esempio == (MyClass ggg) –
@MuhammadUmer si può chiamare qualsiasi altro, solo il nome del parametro dell'oggetto di classe che si sta confrontando, ad es. == altro o questo + altro –
L'argomento deve essere dello stesso tipo, oppure si possono creare operatori come Scala cons Elenco operatore ::, dove il tipo a sinistra è il tipo di elemento per creare la nuova testata e il tipo a destra è il tipo Lista? – pohl
Per estendere Lars' rispondi, puoi anche sovraccaricare gli operatori usando la sintassi della funzione inline.
class MyClass {
operator ==(MyClass o) => id == o.id;
}
dove hai letto che * Dart non supporta il sovraccarico di funzione *? –