如何在Scala中将Range转换为List或Array

14

我想将一个Int范围转换为List或Array。这段代码在Scala 2.8中可行:

var years: List[Int] = List()
val firstYear = 1990
val lastYear = 2011

firstYear.until(lastYear).foreach(
  e => years = years.:+(e)
)
我想知道是否有其他语法可以避免使用foreach,在这段代码中不需要循环。非常感谢! - Loic
4个回答

44

您可以使用toList方法:

scala> 1990 until 2011 toList
res2: List[Int] = List(1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010)

toArray 方法将 Range 转换成数组。


1
谢谢!这也适用于我正在寻找的Iterator - Dave Vogt

18

除了其他答案之外,还有这个:

List.range(firstYear, lastYear)

11

Range有一个toList和一个toArray方法:

firstYear.until(lastYear).toList

firstYear.until(lastYear).toArray

11

简单来说:

(1990 until 2011).toList

但不要忘记,until 不会包括最后一个数字(停止在 2010 年)。如果你想要 2011 年,应该使用 to

(1990 to 2011).toList

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接