小编dhg*_*dhg的帖子

为什么scala不能在元组上隐式匹配?

你可以在ruby中执行以下操作:

l = [[1, 2], [3, 4], [5, 6]]
m  = l.map {|(a, b)| a+b}
Run Code Online (Sandbox Code Playgroud)

但你不能在scala中执行以下操作:

val a = List((1, 2), (3, 4), (5, 6))

a.map((f, s) => f + s)
<console>:9: error: wrong number of parameters; expected = 1
a.map((f, s) => f + s)
Run Code Online (Sandbox Code Playgroud)

相反,你必须这样做:

a.map { case (f, s) => f + s }
Run Code Online (Sandbox Code Playgroud)

我发现这个相当冗长,因为scala定义了一个"元组"类型,我期待它也能在它之上提供语法糖,以便像上面那样隐式匹配.是否有一些深层原因导致不支持这种匹配?有更优雅的方式吗?

scala

3
推荐指数
1
解决办法
213
查看次数

如何在Scala中将Java Collection [Int]转换为Array [Int]

我有一个java.util.Treemap[Long, Int]Scala.我需要做的是将Treemap中的值转换为Array [Int].

我可以得到一个Iterator[Int]Collection[Int]来自TreeMap,但我不知道如何将这些转换为Array[Int].

任何建议,将不胜感激.

java scala treemap

2
推荐指数
1
解决办法
2648
查看次数

从2个给定列表中获取共同元素

所以我有这个2 collections:

import collection.mutable.ListBuffer

val list1 = ListBuffer[(String, String)]()
list1 += (("Italy", "valid"))
list1 += (("Germany", "not valid"))
list1 += (("USA", "not valid"))
list1 += (("Romania", "valid"))

val list2 = ListBuffer[String]()
list2 += "Germany"
list2 += "USA"
list2 += "Romania"
list2 += "Italy"
list2 += "France"
list2 += "Croatia"
Run Code Online (Sandbox Code Playgroud)

我想得到包含具体的公共国家的新列表,condition例如valid结果将是新列表:

Italy, Romania
Run Code Online (Sandbox Code Playgroud)

scala listbuffer

2
推荐指数
1
解决办法
3258
查看次数

对于退货单位

我想用其名称压缩一个月的索引:

  val res = for(i <- 1 to 12) {
    val m = DateTime.parse(i.toString, DateTimeFormat.forPattern("mm").withLocale(Locale.US))
    yield (i, m.monthOfYear().getAsString)
  }
Run Code Online (Sandbox Code Playgroud)

为什么resUnit

scala

0
推荐指数
1
解决办法
84
查看次数

Scala:比较巨大列表中的所有元素

请提供有关算法和实现的建议,以便比较Scala中很长列表中的元素.我有一个包含数千个字符串的列表(来自SQL),我需要将每个列表元素与此列表中的所有其他元素进行比较.

因此,我需要获取元组列表:List[(String, String, Boolean)]前两个元素是匹配的字符串,第三个是结果.

对于N个元素的列表,我的算法到目前为止如下:

  1. 以列表为首
  2. 将头部与列表中剩余的N-1个元素进行比较
  3. 从旧列表的尾部创建新列表,并使用这个新的N-1元素列表完成上述所有工作:

码:

   /**
   * Compare head of the list with each remaining element in this list
   */
  def cmpel(
    fst: String, lst: List[String],
    result: List[(String, String, Boolean)]): List[(String, String, Boolean)] = {

    lst match {
      case next :: tail => cmpel(fst, tail, (fst, next, fst == next) :: result)
      case nill => result.reverse
    }
  }

  /**
   * Compare list elements in all combinations of two
   */
  def cmpAll(lst: List[String],
    result: List[(String, …
Run Code Online (Sandbox Code Playgroud)

algorithm scala list

0
推荐指数
1
解决办法
1567
查看次数

标签 统计

scala ×5

algorithm ×1

java ×1

list ×1

listbuffer ×1

treemap ×1