Şu anda "Scala'da Programlama" kitabında çalışarak Scala'yı öğreniyorum. Şimdiye kadar, orada (Java programcı perspektifinden) garip görünüyor her şey için güzel açıklamalar yapılmış, ancak Fibonacci dizisini oluşturmak için bir Akışı kullanarak bu bir örnek bana tür şaşkın bırakır adres:Scala'da Stream-cons # :: nasıl çevrilir?
def fibFrom(a: Int, b: Int): Stream[Int] =
a #:: fibFrom(b, a + b)
Nasıl yapıdır Akışı bitti mi? Tabii ki #::
operatörü bunun için bir şekilde sorumludur. Anladığım kadarıyla, :
'da bittiği için doğru-ilişkilendirici, ancak bu Stream'in oluşturulmasını açıklamıyor. Sanırım bir şekilde bir kurgana dolaylı olarak tercüme ediliyor ama neden ve nasıl olduğunu tam olarak göremiyorum.
Zaten Predef.scala
ve LowPriorityImplicits.scala
cevabını aradım ama şimdiye kadar hiç şans yok.
Beni aydınlatabilecek biri var mı? Doğru argüman üzerinde bir yöntem olarak çalışır böylece
Teşekkürler, işte bu kadar. Sunulan dönüşümlerin, dönüştürülmesi gereken sınıfın tamamlayıcı nesnesinde de tanımlanabileceğini unuttum. – rolve
Scaladoc, muhtemelen bu kodlanmış tamamlayıcı içeriğin otomatik olarak eklenmesini sağlamalıdır. – Debilski
Belki de Scala'da yeni olanlara işaret etmeliyiz ki _just_, doğru-ilişkilendirici değil. Ayrıca, ConsWrapper'ın, [ad-by] (https://github.com/scala/scala/blob/v2.10.3/src/library/scala/collection/immutable/Stream adresindeki # :: yi de uyguladığı da bilinmektedir. scala # L1042). yani "ConsWrapper" içinde "⇒" (tl: ⇒ Akış [A]) '' 'immutable.this.Stream.consWrapper (fibFrom (b, a + b)) 'ye çevirme. #: :(a)' anlamına gelir fibFrom (b, a + b) 'sadece erişildiğinde çağrılacak. – nicerobot