2015-04-19 14 views
11

performans:Swift Derleyici ben oyun alanında çalıştırırken bir hata üretir Swift kod bu ifadesi var

let colors: [String: [Float]] = ["skyBlue" : [240.0/255.0, 248.0/255.0, 255.0/255.0,1.0], 
"cWhite" : [250.0/255.0, 250.0/255.0, 250.0/255.0, 1.0]] 

hatadır:

expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions Sonra ben sadece çalışan Double için diziler eleman tipini değiştirdi ince. Bununla birlikte, bunun neden olduğunu kendime soruyorum. Double'u kullanarak dediğim gibi çalışıyor. Bu yüzden benim tahminim Swift tipi tahmin etmeye çalışır ve bu nedenle Double bu örnekte Float'dan daha iyi çalışır.

+1

Benzer sorunlar daha önce bildirilen ve edilmiştir: bu somut olayda

, açıkça bir Float için dizide her numarayı dönüştürerek etrafında çalışabilirsiniz otomatik tür çıkarımı. Apple'da bir hata raporu vermelisiniz. –

+0

Yorumunuz için teşekkür ederiz. Fakat eğer tür çıkarım sorunsa, bu gerçekten çözülebilir bir böcek değil, değil mi? Çünkü sorun benim listem değil, genel olarak tür çıkarım modeli. Çünkü bu liste son derece karmaşık bir şekilde genişletilebilirdi. – dehlen

+0

Türler bağlamdan çıkarılabilir ve tek bir renk sözlüğü için çalışır, bu yüzden bir hata olarak düşünürdüm (ancak bir derleyici uzmanı değilim). - Bu somut durumda, dizideki her bir sayıyı açıkça bir Float'a dönüştürerek, etrafta çalışabilirsiniz: '[Float (240.0/255.0), ...'. –

cevap

3

Benzer sorunlar daha önce rapor edildi ve (anladığım kadarıyla) sorun, "karmaşık" ifadeler için otomatik tür çıkarımıdır. Apple'da bir hata raporu vermelisiniz.

Bir renk sözlüğü ile derler, ancak iki ile değil. (Anladığım kadarıyla) Sorun her zaman

let colors = [ 
    "skyBlue" : [Float(240.0/255.0), Float(248.0/255.0), Float(255.0/255.0),Float(1.0)], 
    "cWhite" : [Float(250.0/255.0), Float(250.0/255.0), Float(250.0/255.0), Float(1.0)] 
]