仅使用一个元素表示Seq?

时间:2014-09-30 20:43:07

标签: scala

我经常发现自己只将一个元素Seq传递给这样的方法:

def myMethod(myList: Seq[Int]) = { ... }

通常我这样做:

myMethod(List(42))

但是我觉得这可能不是最优雅的方式,如果我喜欢Scala的一件事,那就是通过减少我认为不可能使用的字符来吹嘘我的思绪。 / p>

那么,单项Seq的表示是否比List(42)更短或更优雅?

我可以想到几个更糟糕的选择!

42 to 42
42 :: List()

2 个答案:

答案 0 :(得分:3)

最简单的内置方式可能只是使用Seq伴侣对象的申请和写作

myMethod(Seq(42))

该apply函数返回默认的Seq实现,即A List,因此相当于使用List(42)

我不确定任何Seq实施的名称是否较短,但您确实可以自行实施,或只是导入Seq(或List)同名别名:

scala> import scala.collection.{Seq => S}

scala> S(42)
res0: Seq[Int] = List(3)

答案 1 :(得分:1)

使用此隐式

可以获得更短的使用语法
implicit def SingletonSeq(i: Int) = Seq(i)

因此

def myMethod(myList: Seq[Int]) = myList.size

myMethod(42)
res: 1