2016-06-03 6 views
0

Ich bin sehr neu in scala-Programmierung, damit diese FrageWarum Kartenfunktion in scala nicht lesen Arrays

Mein scala Programm ist unter

object FirstMain{ 

def main(args: Array[String]): Unit={ 

val myArray = Array(1,2,3,4) 
val k =myArray.map(x => x*10) 
println(k) 
} 


} 

Warum erhalte ich Ausgabe als [I @ 14991ad

ich möchte die Array-Elemente ich möchte wissen, mit 10 und drucken Sie das Ergebnis

auch multipliziert werden jedes Element gelesen und werden wollen, was sind die o Rückgabetyp ist f map() in scala

+1

'[I @ 14991ad' * ist * das neue Array. Arrays drucken ihre Elemente nicht wie 'List's do. Versuchen Sie 'List (1,2,3,4)' anstelle von 'Array (1,2,3,4)' zu verwenden, besonders wenn Sie Anfänger sind und den Unterschied noch nicht vollständig verstehen. – Bergi

+0

ja habe es .. versucht, drucken wie k (0), K (1) .. es druckt .. auch mit List (1,2,3,4) versucht es druckt alle in einer Druckanweisung. Danke für Ihre Hilfe –

+1

Zur anderen Frage des Reutrn-Typs für "map()" in scala: Vielleicht interessiert es Sie zu lesen [Wie können Scala-Sammlungen den korrekten Sammlungstyp aus einer Kartenoperation zurückgeben?] (Http://stackoverflow.com/questions/5200505/how-are-scala-collections-able-zur-return-the-correc-collection-type-from-a-map) und spezifischer wrt Arrays: [Scala Doc von Sammlungen - Arrays] (http: //docs.scala-lang.org/overviews/collections/arrays) – Dilettant

Antwort

1

Array ist eine Scala-Art der Darstellung von Java-Arrays. Das Aufrufen der Array.toString()-Methode (die Sie implizit in println(k) ausführen) ruft die Methode auf, die in der Java-Klasse Object definiert ist (die standardmäßig die hexadezimale Darstellung des Hash-Codes des Objekts druckt). Sie sollten versuchen, Scalas List Typ zu verwenden, der die Methode toString() überschreibt und den hübschen Inhalt der Liste ausgibt.

val list = Array(1, 2, 3, 4).toList 

Für Ihre zweite Frage: andere Array Abbilden eines Array kehrt

val list = List(1, 2, 3, 4) 
println(list) // Prints: `List(1, 2, 3, 4)` 

können Sie auch eine Array einen List leicht umwandeln.

2

Array.map ein anderes Array zurück

println(k) <=> println(String.valueOf(k)) <=> println(k.toString) 

die Array nicht außer Kraft setzen die Methode der toString , wenn Sie Ihr Array drucken möchten wie diese Array(10, 20, 30, 40), können Sie die folgenden Befehle verwenden Code

println(k.deep) 

Viel Glück mit Ihnen

2

map bu Zeigt eine neue Sammlung an, indem eine Funktion auf alle Elemente dieses Arrays angewendet wird.

ein Array drucken Sie folgendes tun:

val myArray = Array(1, 2, 3, 4) 
// myArray: Array[Int] = Array(1, 2, 3, 4) 

val k = myArray.map(x => x * 10) 
// k: Array[Int] = Array(10, 20, 30, 40) 

println(k.mkString("[", ",", "]")) 
// [10,20,30,40] 

Daher Sie here was bedeutet eigentlich [[email protected] Mittel lesen kann. (Array of Integer mit Hashcode des Array-Objekts 14991ad)