Die Art, wie ich Ansichtsstruktur in Scala verstehe, ist diese Ansicht ist eine faule Sammlung und ist nicht mit echten Sammlung Mitglieder gefüllt, bevor sie zugegriffen werden. Mit dieser Beschreibung der Ansicht soll die folgende Codezeile nicht einen Fehler aus:Ansicht auf Bereich verursacht nicht genügend Speicher Fehler in Scala
val a = (0 to 123456789).view
und da es nicht erwartet hat. I (höchstwahrscheinlich falsch) annehmen, die folgende Codezeile zu dem obigen Code äquivalent und soll nicht einen außerhalb des Speicherfehlers werfen entweder:
val a = Array.range(0,123456789).view
aber es erzeugt einen „java.lang.OutOfMemoryError: Java Heap-Speicher " Error. Irgendeine Idee, warum sich diese beiden Codezeilen anders verhalten?
also, wenn ich richtig verstehe, Scala Compiler ist nicht intelligent genug, um diese beiden Schritte zu kombinieren? – TNM
@TNM - Dies ist nicht genau ein Fall von "nicht intelligent genug", sondern "tun, wonach Sie fragen". Der Compiler ist auch nicht in der Lage, diese Art von Kombination zu machen (im Allgemeinen sowieso; es gibt spezielle Fälle, die der Optimierer bekommt), aber in diesem Fall sollte er sowieso nichts anderes tun, da Sie vermutlich einen guten Grund dafür hatten eine Ansicht, die von einem Array im Gegensatz zu einem Bereich unterstützt wird. –