当前位置:  开发笔记 > 编程语言 > 正文

varargs难题?

如何解决《varargs难题?》经验,为你挑选了1个好方法。

我确定答案很简单,但我陷入了困境:

Welcome to Scala version 2.7.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_14).
Type in expressions to have them evaluated.
Type :help for more information.

scala> def f(x:Int*)=0
f: (Int*)Int

scala> val xs:Seq[Int]=1::2::3::4::Nil
xs: Seq[Int] = List(1, 2, 3, 4)

scala> f (xs)
:7: error: type mismatch;
 found   : Seq[Int]
 required: Int
       f (xs)
          ^

我如何构建'Int*'?



1> Ben James..:

要将序列解压缩到参数列表中,请使用 _*

scala> f(xs: _*)
res1: Int = 0


嗯,这是强迫类型.正确的类型是参数列表,而不是作为列表的参数.顺便说一句,它适用于任何类型的序列,以及任何可以转换为序列的类型,因此您可以直接传递`List`.而且,它是对称的.你可以做`xs match {case List(ys @ _*)=> ...}`.
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有