«type-inference» etiketlenmiş sorular

Tür çıkarımı, bir tür sistemi tarafından tanımlanan kuralları kullanarak programlar için türlerin otomatik olarak çıkarılması işlemidir.

30
C # 'da var anahtar kelimesinin kullanımı
Kilitli . Bu soru ve cevapları kilitlidir çünkü soru konu dışıdır, ancak tarihsel önemi vardır. Şu anda yeni yanıtları veya etkileşimleri kabul etmiyor. C # 3'te 'var' anahtar kelimesinin kullanımı ile ilgili meslektaşları ile görüştükten sonra insanların var yoluyla tür çıkarmanın uygun kullanımları hakkında ne düşündüklerini merak ettim. Örneğin ben …
406 c#  type-inference  var 

3
Collections.emptyList () bir <Object> Listesi döndürür?
Genel tür parametrelerini çıkarmak için Java'nın kuralında gezinirken sorun yaşıyorum. İsteğe bağlı bir liste parametresine sahip olan aşağıdaki sınıfı düşünün: 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) { this.name = name; this.nicknames = …


14
C ++ 11 otomatik anahtar kelimesi ile ne kadar çok şey var?
autoC ++ 11 standardında mevcut olan yeni anahtar kelimeyi, bunun için tasarlandığına inandığım karmaşık şablonlu türler için kullanıyorum. Ama aynı zamanda şu gibi şeyler için kullanıyorum: auto foo = std::make_shared&lt;Foo&gt;(); Ve daha şüpheci olanlar: auto foo = bla(); // where bla() return a shared_ptr&lt;Foo&gt; Bu konuda çok fazla tartışma görmedim. …

22
Swift derleme zamanı neden bu kadar yavaş?
Xcode 6 Beta 6 kullanıyorum. Bu bir süredir beni rahatsız eden bir şey, ama şimdi neredeyse hiç kullanılamadığı bir noktaya ulaşıyor. Projem iyi bir boyutta 65 Swift dosyası ve birkaç köprülü Objective-C dosyasına sahip olmaya başlıyor (bu gerçekten sorunun nedeni değildir). Herhangi bir Swift dosyasında küçük bir değişiklik gibi görünüyor …

6
Bir sınıf türü bir işlev parametresi olarak nasıl iletilir
Bir web hizmetini çağıran ve JSON yanıtını bir nesneye geri serileştiren genel bir işlevim var. 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 */ } Başarmaya çalıştığım şey, bu Java kodunun …

14
C ++ 'da otomatik değişkenleri bildirmenin bir dezavantajı var mı?
Görünüşe göre auto, birçok yeni dili takip eden C ++ 11'e eklenmesi oldukça önemli bir özellikti. Python gibi bir dilde olduğu gibi, herhangi bir açık değişken bildirimi görmedim (Python standartlarını kullanarak mümkün olup olmadığından emin değilim). autoDeğişkenleri açıkça belirtmek yerine bildirmek için kullanmanın bir dezavantajı var mı ?

1
Ölçek, çıkarsanan türlerin "kabul edilebilir karmaşıklığına" ne gibi sınırlar koyar?
Scala Dil Spesifikasyonuna Göre : ... yerel tür çıkarımına, çıkarsanan sınırların [tür parametrelerinin] karmaşıklığını sınırlandırmasına izin verilir. Tiplerin minimum ve maksimumluğu, kabul edilebilir karmaşıklık türleri dizisine göre anlaşılmalıdır. Pratikte sınırlar nelerdir? Ayrıca, çıkarsanan ifade türleri için parametre türü sınırlarından farklı sınırlar var mı ve bu sınırlar nelerdir?

8
Tasarım zamanında var kullanılarak bildirilen bir değişkenin türünü güvenilir bir şekilde nasıl belirleyebilirim?
Emacs'de C # için bir tamamlama (intellisense) tesisi üzerinde çalışıyorum. Buradaki fikir şudur, eğer bir kullanıcı bir parça yazarsa ve daha sonra belirli bir tuş vuruşu kombinasyonu yoluyla tamamlama isterse, tamamlama tesisi olası tamamlamaları belirlemek için .NET yansımasını kullanır. Bunu yapmak, tamamlanan şeyin türünün bilinmesini gerektirir. Bir dizeyse, bilinen bir …

1
Statik genel yöntemleri çağırma
Statik jenerik yöntemleri içeren ilginç bir durumla karşılaştım. Kod bu: 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(); } } Neden ifadede herhangi bir tür bağımsız değişkeni belirtmem gerekmiyor Foo.createFoo()? Bu bir tür …

5
tür çıkarımı uygulama
Burada statik ve dinamik yazım hakkında bazı ilginç tartışmalar görüyorum. Genelde, derleme türü denetimi, daha iyi belgelenmiş kod vb. Nedeniyle statik yazmayı tercih ederim. Ancak, örneğin Java'nın yaptığı gibi yapılırsa kodu karıştıracaklarını kabul ediyorum. Bu yüzden, kendime ait işlevsel bir stil dili oluşturmaya başlamak üzereyim ve yazı çıkarımı uygulamak istediğim …

3
Java 8'de istisna türü çıkarımın kendine özgü bir özelliği
Bu sitede başka bir cevap için kod yazarken şu tuhaflıkla karşılaştım: 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; } static &lt;T extends Throwable&gt; …

4
Lamda dönüş tipi derleme zamanında neden kontrol edilmiyor?
Kullanılan yöntem başvurusunun dönüş türü vardır Integer. Ancak Stringaşağıdaki örnekte uyumsuzluğa izin verilmektedir. withManuel döküm olmadan yöntem referans türünü güvenli hale getirmek için yöntem bildirimi nasıl düzeltilir ? import java.util.function.Function; public class MinimalExample { static public class Builder&lt;T&gt; { final Class&lt;T&gt; clazz; Builder(Class&lt;T&gt; clazz) { this.clazz = clazz; } static …

6
Java neden bir süper tip çıkaramıyor?
Hepimiz Long'un uzandığını biliyoruz Number. Peki bu neden derlenmiyor? Ve withprogramın herhangi bir manuel döküm olmadan derlenmesi için yöntemi nasıl tanımlayabilirim ? 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;, R&gt; Builder&lt;T&gt; with(F getter, R returnValue) { …

2
`Std :: mem :: drop` neden üst sıra özellik sınırlarındaki kapatma | _ | () ile tam olarak aynı değil?
Uygulamasının std::mem::dropaşağıdaki gibi belgelenmiştir: pub fn drop&lt;T&gt;(_x: T) { } Bu nedenle, kapamanın |_| ()(konuşma dilinde tuvalet kapağı olarak bilinir ) dropher iki yönde de potansiyel bir 1: 1 değiştirme olmasını beklerim. Bununla birlikte, aşağıdaki kod drop, işlevin parametresine bağlı daha yüksek sıralı bir özellikle uyumlu olmadığını gösterirken , tuvalet …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.