[SCALA] 스칼라 - 인쇄 배열
SCALA스칼라 - 인쇄 배열
그것은 인쇄 배열에 대한 지원이 다소 스칼라에서 부족한 것 같습니다. 당신이 하나를 인쇄하는 경우, 당신은 당신이 자바로 불렀 기본 쓰레기를 얻을 :
scala> val array = Array.fill(2,2)(0)
array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0))
scala> println(array)
[[I@d2f01d
(또는 적어도 나는 그것을 알아낼 수 없습니다) : 또한, 당신은 java.util.Arrays 클래스의 자바 toString / deepToString 방법을 사용할 수 없습니다
scala> println(java.util.Arrays.deepToString(array))
<console>:7: error: type mismatch;
found : Array[Array[Int]]
required: Array[java.lang.Object]
println(java.util.Arrays.deepToString(array))
나는 2 차원 배열을 인쇄 찾을 수있는 가장 좋은 방법은 다음을 수행하는 것입니다 :
scala> println(array.map(_.mkString(" ")).mkString("\n"))
0 0
0 0
이 일을 더 관용적 방법이 있나요?
해결법
-
==============================
1.스칼라 2.8에서는 배열에 정의 된 깊은 방법을 사용할 수 반환을 모두 cointaining IndexedSeq (아마도 중첩)이 배열의 요소 및 그에 된 mkString 전화 :
스칼라 2.8에서는 배열에 정의 된 깊은 방법을 사용할 수 반환을 모두 cointaining IndexedSeq (아마도 중첩)이 배열의 요소 및 그에 된 mkString 전화 :
scala> val array = Array.fill(2,2)(0) array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) scala> println(array.deep.mkString("\n")) Array(0, 0) Array(0, 0)
내가하지 않도록이 당신이 원하는 정확하게 무엇을 제공하는지 여부 해요 그래서 반환 IndexedSeq은 기본적으로 stringprefix '배열'을 가지고있다.
-
==============================
2.이것은 어떤가요:
이것은 어떤가요:
scala> val array = Array.fill(2,2)(0) array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) scala> import scala.runtime.ScalaRunTime._ import scala.runtime.ScalaRunTime._ scala> val str = stringOf(array) str: String = Array(Array(0, 0), Array(0, 0))
-
==============================
3.Arjan의 대답에 조금 더 추가 - 인쇄, 심지어 요소들 사이의 구분 기호를 지정 된 mkString의 방법을 사용할 수 있습니다. 예를 들어 :
Arjan의 대답에 조금 더 추가 - 인쇄, 심지어 요소들 사이의 구분 기호를 지정 된 mkString의 방법을 사용할 수 있습니다. 예를 들어 :
val a = Array(1, 7, 2, 9) a.mkString(" and ") // "1 and 7 and 2 and 9" a.mkString("<", ",", ">") //mkString(start: String, sep: String, end: String) // "<1,7,2,9>"
-
==============================
4.단순히이 시도 :
단순히이 시도 :
// create an array val array1 = Array(1,2,3) // print an array elements seperated by comma println(array1.mkString(",")) // print an array elements seperated by a line println(array1.mkString("\n")) // create a function def printArray[k](a:Array[k])= println(a.mkString(",")) printArray(array1)
-
==============================
5.오히려 이와 같은 I :
오히려 이와 같은 I :
Array(1, 7, 2, 9).foreach(println)
-
==============================
6.은 "함수형 프로그래밍"방법은 (지금까지의 내가 우려 등)이 작업을 수행하는 것입니다 :
은 "함수형 프로그래밍"방법은 (지금까지의 내가 우려 등)이 작업을 수행하는 것입니다 :
scala> array foreach{case a => a foreach {b => print(b.toString + " ")}; print('\n')} 0 0 0 0
또는 당신은 정말 간격에 대해 상관하지 않는 경우 :
scala> array foreach{a => a foreach println} 0 0 0 0
그것은이를 만들기 위해 너무 오래 걸리는 경우 IMHO는 함수형 프로그래밍이 좀 지저분를 얻을 수 있습니다, 난 그냥 필수적 방법을 갈 말하고 싶지만.
-
==============================
7.외부 배열은 다음뿐만 아니라 같이 내부에 대한 사용자 정의 구분와 배열 [배열 [일도]]의 깔끔한 서식을 얻을 수 있습니다 :
외부 배열은 다음뿐만 아니라 같이 내부에 대한 사용자 정의 구분와 배열 [배열 [일도]]의 깔끔한 서식을 얻을 수 있습니다 :
def arrayToString(a: Array[Array[Int]]) : String = { val str = for (l <- a) yield l.mkString("{", ",", "}") str.mkString("{",",\n","}") } val foo = Array.fill(2,2)(0) println(arrayToString(foo))
이 결과 :
{{0,0}, {0,0}}
from https://stackoverflow.com/questions/3328085/scala-printing-arrays by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 왜 보조 기술은 타입 수준의 계산에 필요합니까? (0) | 2019.11.15 |
---|---|
[SCALA] 왜 스칼라 특성은 클래스를 확장 할 수 있습니다? (0) | 2019.11.15 |
[SCALA] 당신은 어떻게 스칼라의 기본 생성자에서 로컬 VAR / 발을 정의합니까? (0) | 2019.11.15 |
[SCALA] 어떻게 일반 명령 줄 프로그램과 쉘에서 SBT의 주요 클래스를 실행합니까? (0) | 2019.11.15 |
[SCALA] 스칼라에서 반복자 및 스트림의 차이? (0) | 2019.11.15 |