Domande taggate «type-inference»

L'inferenza del tipo è il processo di inferenza automatica dei tipi per i programmi, utilizzando regole definite da un sistema di tipi.

30
Uso della parola chiave var in C #
Bloccato . Questa domanda e le sue risposte sono bloccate perché la domanda è fuori tema ma ha un significato storico. Al momento non accetta nuove risposte o interazioni. Dopo una discussione con i colleghi sull'uso della parola chiave "var" in C # 3, mi chiedevo quali fossero le opinioni …
406 c#  type-inference  var 

3
Collections.emptyList () restituisce un elenco <oggetto>?
Sto riscontrando problemi nella navigazione della regola di Java per inferire i parametri di tipo generico. Considera la seguente classe, che ha un parametro elenco opzionale: import java.util.Collections; import java.util.List; public class Person { private String name; private List&lt;String&gt; nicknames; public Person(String name) { this(name,Collections.emptyList()); } public Person(String name,List&lt;String&gt; nicknames) …




5
Come passare un tipo di classe come parametro di funzione
Ho una funzione generica che chiama un servizio Web e serializza la risposta JSON su un oggetto. class func invokeService&lt;T&gt;(service: String, withParams params: Dictionary&lt;String, String&gt;, returningClass: AnyClass, completionHandler handler: ((T) -&gt; ())) { /* Construct the URL, call the service and parse the response */ } Quello che sto cercando …



8
Come posso determinare in modo affidabile il tipo di una variabile dichiarata utilizzando var in fase di progettazione?
Sto lavorando a una struttura di completamento (intellisense) per C # in emacs. L'idea è che, se un utente digita un frammento, quindi richiede il completamento tramite una particolare combinazione di tasti, la funzione di completamento utilizzerà la riflessione .NET per determinare i possibili completamenti. Per fare questo è necessario …

1
Chiamata di metodi generici statici
Mi sono imbattuto in una situazione curiosa che coinvolge metodi generici statici. Questo è il codice: class Foo&lt;E&gt; { public static &lt;E&gt; Foo&lt;E&gt; createFoo() { // ... } } class Bar&lt;E&gt; { private Foo&lt;E&gt; member; public Bar() { member = Foo.createFoo(); } } Come mai non devo specificare alcun tipo …


3
Una caratteristica peculiare dell'inferenza del tipo di eccezione in Java 8
Mentre scrivevo il codice per un'altra risposta su questo sito mi sono imbattuto in questa particolarità: static void testSneaky() { final Exception e = new Exception(); sneakyThrow(e); //no problems here nonSneakyThrow(e); //ERRROR: Unhandled exception: java.lang.Exception } @SuppressWarnings("unchecked") static &lt;T extends Throwable&gt; void sneakyThrow(Throwable t) throws T { throw (T) t; …

4
Perché il tipo restituito lambda non viene verificato al momento della compilazione?
Il riferimento al metodo utilizzato ha il tipo restituito Integer. Ma un incompatibile Stringè consentito nel seguente esempio. Come risolvere la withdichiarazione del metodo per rendere sicuro il tipo di riferimento del metodo senza eseguire il cast manualmente? import java.util.function.Function; public class MinimalExample { static public class Builder&lt;T&gt; { final …

6
Perché Java non può dedurre un supertipo?
Sappiamo tutti che Long si estende Number. Quindi perché questo non si compila? E come definire il metodo in withmodo che il programma venga compilato senza alcun cast manuale? import java.util.function.Function; public class Builder&lt;T&gt; { static public interface MyInterface { Number getNumber(); Long getLong(); } public &lt;F extends Function&lt;T, R&gt;, …

2
Perché `std :: mem :: drop` non è esattamente uguale alla chiusura | _ | () nei limiti dei tratti di livello superiore?
L'implementazione di std::mem::dropè documentata come la seguente: pub fn drop&lt;T&gt;(_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 …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.