de Martin R lazy()
bir ara dizinin oluşumunu önler söz. Ancak, fonksiyonun yürütme süresini farklı boyutlarda karşılaştırırsam, lazy()
'un "sadece"% 10 daha hızlı olduğunu görürsünüz.
lazy()
lazy()
, 200'den az elemanla 2 kata kadar daha hızlı dizilere sahip olduğunu ve dönüşüm olmadan işlev olarak neredeyse eşit derecede hızlı bir şekilde (% 10 daha hızlı) olduğunu görürsünüz.
((derlenmiş) kaynak dosyaları olarak bir Oyun küresel işlevleri ve protokol uzantılı Xcode 6.4 ve Xcode 7 ile test edilmiştir)
o sonlu olup olmadığını bilmiyorum Yani
lazy()
yerine
Sequences
için kullanılacak
. Sonra, döngüler için muhtemelen break
veya return
ile kullanılır:
for element in lazy(sequence).map{ ... } {
if element == 1000 {
break
}
// use element
}
da sonsuz olacağını sonsuz Sequence
(gibi 1,2,3 ...) yürütme haritayı çağırırsanız. lazy()
ile dönüşüm ve yürütme "gecikmeli" olur, böylece son öğeden önce döngüden ayrılırsanız "büyük" ve sonsuz dizileri daha verimli şekilde kullanabilirsiniz. Bu arada
, ' (flatMap dönüşümü: Generator.Element -> u?) -> [U] 'artık Swift 2 standart kitaplığında mevcuttur :) – jtbandes