Nella programmazione di computer, un tratto è una raccolta di metodi, utilizzati come "semplice modello concettuale per strutturare programmi orientati agli oggetti"
Un tipo di auto per un tratto A: trait B trait A { this: B => } afferma che " Anon può essere mischiato in una classe concreta che non si estende anche B" . D'altra parte, il seguente: trait B trait A extends B dice che "qualsiasi classe (concreta …
Qual è il vantaggio di usare una classe astratta invece di una caratteristica (a parte le prestazioni)? Sembra che le classi astratte possano essere sostituite da tratti nella maggior parte dei casi.
Scenario: trait A { function calc($v) { return $v+1; } } class MyClass { use A; function calc($v) { $v++; return A::calc($v); } } print (new MyClass())->calc(2); // should print 4 Questo codice non funziona e non riesco a trovare un modo per chiamare una funzione tratto come se fosse …
Ultimamente ho cercato di studiare PHP e mi ritrovo a rimanere impiccato sui tratti. Comprendo il concetto di riutilizzo del codice orizzontale e non voglio necessariamente ereditare da una classe astratta. Quello che non capisco è: qual è la differenza cruciale tra l'uso dei tratti rispetto alle interfacce? Ho provato …
Le classi sigillate sono descritte in "Programmazione in Scala", mentre i tratti sigillati no. Dove posso trovare ulteriori informazioni su un tratto sigillato? Vorrei sapere se un tratto sigillato è uguale a una classe sigillata? O, in caso contrario, quali sono le differenze? Quando è una buona idea usare un …
I tratti di Rust sembrano almeno superficialmente simili alle macchine da scrivere di Haskell, tuttavia ho visto persone scrivere che ci sono alcune differenze tra loro. Mi chiedevo esattamente quali siano queste differenze.
Allo stato attuale, questa domanda non è adatta al nostro formato di domande e risposte. Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze, ma questa domanda probabilmente solleciterà dibattiti, argomenti, sondaggi o discussioni estese. Se ritieni che questa domanda possa essere migliorata e possibilmente riaperta, visita …
Dato un lambda, è possibile capire il tipo di parametro e il tipo restituito? Se si, come? Fondamentalmente, voglio lambda_traitsche può essere utilizzato nei seguenti modi: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long La motivazione dietro …
È una pratica sicura utilizzare i metodi predefiniti come versione umana dei tratti in Java 8? Alcuni sostengono che potrebbe rendere i panda tristi se li usi solo per il gusto di farlo, perché è bello, ma non è mia intenzione. Spesso viene anche ricordato che i metodi predefiniti sono …
Stavo esaminando le diapositive in scala efficaci e nella diapositiva 10 si menziona di non usare mai valin una traitper i membri astratti e di usare definvece. La diapositiva non menziona in dettaglio perché l'uso di abstract valin a traitè un anti-pattern. Apprezzerei se qualcuno potesse spiegare le migliori pratiche …
L'implementazione di std::mem::dropè documentata come la seguente: pub fn drop<T>(_x: T) { } In quanto tale, mi aspetterei che la chiusura |_| ()(colloquialmente nota come chiusura del gabinetto ) sia un potenziale sostituto 1: 1 dropin entrambe le direzioni. Tuttavia, il codice seguente mostra che dropnon è compatibile con un …
Ho un tratto che ha una funzione per deserializzare un tipo associato. Tuttavia, quel tipo associato deve avere una durata che il chiamante decide, quindi ho una caratteristica separata per la quale uso un tratto di classificazione superiore associato, in modo che possa essere deserializzato per qualsiasi durata. Devo usare …
Stavo lavorando attraverso gli esempi di codice del capitolo Tratti nella programmazione in Scala Edition1 https://www.artima.com/pins1ed/traits.html e ho riscontrato un comportamento strano a causa del mio errore di battitura. Mentre il metodo di un tratto di sotto frammento di codice override non dà alcun errore di compilazione, anche se il …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.