小编elm*_*elm的帖子

Scala嵌套数组展平

如何展平任何深度的嵌套数组?

例如

val in = Array( 1, Array(2,3), 4, Array(Array(5)) )
Run Code Online (Sandbox Code Playgroud)

会被夷为平地

val out = Array(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

arrays collections scala flatten

4
推荐指数
1
解决办法
2786
查看次数

在Scala中,将函数应用于不可变映射中某些键的值

让一个不可变的地图

val m = (0 to 3).map {x => (x,x*10) }.toMap
m: scala.collection.immutable.Map[Int,Int] = Map(0 -> 0, 1 -> 10, 2 -> 20, 3 -> 30)
Run Code Online (Sandbox Code Playgroud)

一系列感兴趣的钥匙

val k = Set(0,2)
Run Code Online (Sandbox Code Playgroud)

和一个功能

def f(i:Int) = i + 1
Run Code Online (Sandbox Code Playgroud)

如何应用于f感兴趣的键映射的映射中的值,以便生成映射

Map(0 -> 1, 1 -> 10, 2 -> 21, 3 -> 30)
Run Code Online (Sandbox Code Playgroud)

collections scala

4
推荐指数
1
解决办法
1579
查看次数

将元素移动到Scala中列表的前面

我想知道是否有办法在列表中找到一个元素并将其移动到Scala列表的前面?有没有什么简单的方法可以做到这一点,除了迭代列表,然后删除该元素,然后将其预先挂起到列表的前面?

scala data-structures scala-collections

4
推荐指数
1
解决办法
1110
查看次数

在Scala中对Array of Arrays执行元素添加的惯用方法是什么?

我有一个Array[Array[Float]]保证所有内部数组长度相同的.我想在所有内部数组上执行元素加法.

让我用一个具体的例子说明这一点.假设我的Array包含三个由七个Floats组成的Arrays,其值如下:

Array[Array[Float]] = Array(
                          Array(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0), 
                          Array(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), 
                          Array(0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0)
                      )
Run Code Online (Sandbox Code Playgroud)

现在我想将其转换为大小为7的数组,其中第n个元素是我输入中第n个元素的总和Array.对于我的示例输入,输出将是:

Array[Float] = Array(1.0, 3.0, 3.0, 5.0, 5.0, 7.0, 7.0)
Run Code Online (Sandbox Code Playgroud)

为了在两个Array[Float]人身上执行此操作,我知道我可以压缩它们然后添加带有地图的元素.然而,我仍然在努力寻找能够将任意数量Array[Float]的元素相加的更通用的解决方案.

任何帮助将非常感激!

scala scala-collections

4
推荐指数
1
解决办法
1447
查看次数

模式匹配Scala中的案例类列表

假设我有一个我希望模式匹配的案例类列表,如果有类型,则返回true或false.例如.,

case class TypeA(one: String, two: Int, three: String)

val list = List(TypeA, TypeA, TypeA)
Run Code Online (Sandbox Code Playgroud)

我想现在匹配类型列表,看看TypeA是否包含其参数之一的某个值(比如第一个参数).我所拥有的是以下内容:

def isAvailableInTypeA(list: List[TypeA], checkStr: String) = {
  !(list.dropWhile(_.one != checkStr).isEmpty))
}
Run Code Online (Sandbox Code Playgroud)

对于我想要实现的目标,是否有更好的可读性建议?

scala list pattern-matching scala-collections

4
推荐指数
1
解决办法
1228
查看次数

scala是否支持许多模式匹配的一个默认子句?

考虑下面的代码:

val first = ...
val second = ...
val third = ...
val fours = ...

first match {
  case "someString" => second match {
    case s:String => third match {
      case MyEnum.A => //some logic
      case MyEnum.B => fours match {
        case Some(old:String) => //some other logic
        case default=> defaulLogic
      }
      case default=> defaulLogic
    }
    case default=> defaulLogic
  }
  case default=> defaulLogic
}

private def defaulLogic()= {
    //log error here
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将case default逻辑放在一个地方而不是在每个模式匹配中复制它?

注意

只有顶部的match-case …

scala pattern-matching

4
推荐指数
1
解决办法
134
查看次数

如何在Scala中为Iterable <Object>编写while()循环?

我正在学习Scala,我想从Java转换一行代码.我在scala中尝试了2种方法,但它们没有用.该类ResultScanner来自Apache HBase - ResultScanner,对于Result类也是如此

Java的

for(Result r : resultScanner) System.out.println(r)
Run Code Online (Sandbox Code Playgroud)

斯卡拉

while(resultScanner.hasNext)      // error[1]
  println(resultScanner.next())

//error[1]: value hasNext is not a member of org.apache.hadoop.hbase.client.ResultScanner
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下内容:

resultScanner.foreach(println(_)) // error[2]

// error[2]: value foreach is not a member of org.apache.hadoop.hbase.client.ResultScanner
Run Code Online (Sandbox Code Playgroud)

scala

4
推荐指数
1
解决办法
1333
查看次数

Scala案例类在receive方法中不匹配(在akka actor中)

我有这样的事情:

class ProbeActor extends Actor {
  case class Probe(messageKey: String)
  def receiveProbe: Receive = {
    case Probe(probeKey) => println("Good probe: "+probeKey)
    case x => println("Bad probe: "+ x)
  }
  final override def receive = receiveProbe orElse receiveOther
  def receiveOther: Receive = {
    case _ => println("Other")
  }
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

class Prober extends ProbeActor {
  val definite = ActorSystem("ProbeTest").actorOf(Props[ProbeActor], name = "probed")
  implicit val timeout = Timeout(5 second)
  val future = definite ? Probe("key")
}
Run Code Online (Sandbox Code Playgroud)

我希望文本"Good probe: key"应该打印,但我明白了"Bad …

scala pattern-matching case-class akka

4
推荐指数
1
解决办法
508
查看次数

在Scala中如何对数组中的连续元素进行分组

特定

scala> val a = (1 to 9).toArray
a: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
Run Code Online (Sandbox Code Playgroud)

想以a这种方式分组元素,

Array(Array(1,2,3), Array(4,5,6), Array(7,8,9))
Run Code Online (Sandbox Code Playgroud)

arrays scala

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

定义组合其他一阶函数的一阶函数

我有这门课MyClass:

abstract class MyClass { def myMethod: A => B }

object MyClass { 
  def apply(dep: A => B)(f: B => B) = new MyClass{ def myMethod = ????? }
}
Run Code Online (Sandbox Code Playgroud)

apply方法内部,我想定义myMethod组合fdep功能f(dep).我怎样才能做到这一点?

scala

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