0
튜플을 생성해야하지만이 튜플의 크기는 변수 값에 따라 런타임에 변경해야합니다. 나는 스칼라에서 그렇게 할 수 없다. 그래서 배열을 만들었습니다 :가변 길이의 배열을 스칼라에서 튜플로 변환
val temp:Array[String] = new Array[String](x)
어떻게 배열을 튜플로 변환합니까? 이것이 가능한가? 나는 초보자입니다.
튜플을 생성해야하지만이 튜플의 크기는 변수 값에 따라 런타임에 변경해야합니다. 나는 스칼라에서 그렇게 할 수 없다. 그래서 배열을 만들었습니다 :가변 길이의 배열을 스칼라에서 튜플로 변환
val temp:Array[String] = new Array[String](x)
어떻게 배열을 튜플로 변환합니까? 이것이 가능한가? 나는 초보자입니다.
튜플을 만들려면 원하는 크기를 알아야합니다.
val temp = Array("1", "2")
val tup = temp match { case Array(a,b) => (a,b) }
// tup: (String, String) = (1,2)
def expectsTuple(x: (String,String)) = x._1 + x._2
expectsTuple(tup)
을 그리고 당신이 함수가 기대대로에 튜플을 전달할 수 있습니다 : 당신이이 가정에, 당신은 같은 것을 할 수 있습니다.
implicit class Enriched_toTuple_Array[A](val seq: Array[A]) extends AnyVal {
def toTuple2 = seq match { case Array(a, b) => (a, b); case x => throw new AssertionError(s"Cannot convert array of length ${seq.size} into Tuple2: Array(${x.mkString(", ")})") }
def toTuple3 = seq match { case Array(a, b, c) => (a, b, c); case x => throw new AssertionError(s"Cannot convert array of length ${seq.size} into Tuple3: Array(${x.mkString(", ")})") }
def toTuple4 = seq match { case Array(a, b, c, d) => (a, b, c, d); case x => throw new AssertionError(s"Cannot convert array of length ${seq.size} into Tuple4: Array(${x.mkString(", ")})") }
def toTuple5 = seq match { case Array(a, b, c, d, e) => (a, b, c, d, e); case x => throw new AssertionError(s"Cannot convert array of length ${seq.size} into Tuple5: Array(${x.mkString(", ")})") }
}
이 당신이 할 수 있습니다 :
val tup = temp.toTuple2
// tup: (String, String) = (1,2)
이 크기 런타임에 달라질 수있는 유일한인가
당신이 애호가 얻고 싶은 경우에, 당신은
.toTuple
방법을 정의 할 수 있습니다? 튜플에있는 항목의 유형은 어떻습니까? 당신의 예제에서 제시하는 것처럼 항상 'String'이 될 것입니까? – vptheron튜플은 정의상 이질적 요소 고정 된 것입니다. 동적 수의 문자열이 필요하면 모든 유형의 컬렉션을 사용할 수 있습니다. 왜 그것을 "튜플"로 변환하고 싶습니까? –
다른 클래스의 메서드에 튜플을 공급해야하기 때문에 튜플이 필요합니다. 컨트롤을 사용할 수 없습니다. 예, 튜플의 타입은 String입니다. – user2773013