将scala元组包装到自定义类对象

Pav*_*nko 16 scala tuple-packing

我有一个元组

val tuple = ("Mike", 40)
Run Code Online (Sandbox Code Playgroud)

和一个案例类

case class Person(name: String, age: Int)
Run Code Online (Sandbox Code Playgroud)

如何将我的元组打包到Person类的对象?除此之外有什么方法:

new Person(tuple._1, tuple._2)
Run Code Online (Sandbox Code Playgroud)

也许有人喜欢

tuple.asInstanceOf[Person]
Run Code Online (Sandbox Code Playgroud)

谢谢.

sen*_*nia 33

tupled

您可以将Person.apply方法转换为函数,然后tupled在函数上使用方法:

(Person.apply _) tupled tuple
Run Code Online (Sandbox Code Playgroud)

scala 2.11.8和扩展的scala 2.12伴随对象中,所以这就足够了:case classFunctionN

Person tupled tuple
Run Code Online (Sandbox Code Playgroud)

模式匹配

new Person(tuple._1, tuple._2)没有丑陋_N方法的模拟是模式匹配:

tuple match { case (name, age) => Person(name, age) }
Run Code Online (Sandbox Code Playgroud)