小编jts*_*jts的帖子

动态添加/删除路由器到路由器actor

您是否知道在Akka/Scala中添加/删除路由到Broadcaster路由器的好方法?

我一直在看Resizer - 但是不能满足我的需求(我无法看到如何明确要求调整器调整大小(添加路由)并删除它似乎你需要向actor发送一个Poison Pill然后被删除).

到目前为止,我有一个带有ActorRef列表的路由器,我发送了AddRoutee和RemoveRoutee消息....

我的业务案例:我有一个演员从网络(通过代理)获取数据,并且需要将这些数据分发给独立的演员以便并行处理.由于收件人的图形性质(DAG),图表可以在运行时进化,顶点/边缘被修改,因此需要添加和删除路由

必须有一个更清洁的方法来做到这一点.

谢谢你的指点.

我希望Akka处理的代码示例:

 class MDActor extends Actor {
  @volatile var routees = Set[ActorRef]()

  def receive = {
    case ar: AddRoutee => routees = routees + ar.actorRef
    case rr: RemoveRoutee => routees = routees - rr.actorRef
    case msg => routees.foreach(r => r forward msg)
  }
}
Run Code Online (Sandbox Code Playgroud)

scala akka

12
推荐指数
1
解决办法
3276
查看次数

Scala排列使用两个列表

请问以下最好的方法是什么?我有两个清单:

val l1 = List("a", "b") 
val l2 = List(1, 2) 
Run Code Online (Sandbox Code Playgroud)

我想生成这个:

 List (
    List(('a', 1), ('b', 1)),
    List(('a', 1), ('b', 2)),
    List(('a', 2), ('b', 1)),
    List(('a', 2), ('b', 2))
  )  
Run Code Online (Sandbox Code Playgroud)

哪个基本上是第一个列表与第二个列表组合创建元组列表?考虑使用带滑动(2,2)的foldLeft来获得我的结果,但不能只是得到正确的结果.

解决方案应该适用于任何大小和类型,如List('a','b','c')和List("1","2")

谢谢

scala

9
推荐指数
2
解决办法
2653
查看次数

2d scala数组迭代

我有一个类型为boolean的二维数组(不重要)很容易以非功能样式迭代数组.怎么做FP风格?

var matrix = Array.ofDim[Boolean](5, 5) 
Run Code Online (Sandbox Code Playgroud)

对于ex,我想迭代给定列的所有行并返回与特定函数匹配的int列表.示例:对于第3列,如果(4,3),(5,3)处的单元格与特定函数匹配,则遍历第1行到第5行以返回4,5.太多了

def getChildren(nodeId: Int) : List[Int] = {
    info("getChildren("+nodeId+")")

    var list = List[Int]()
    val nodeIndex = id2indexMap(nodeId)

    for (rowIndex <- 0 until matrix.size) {
      val elem = matrix(rowIndex)(nodeIndex)
      if (elem) {
        println("Row Index = " + rowIndex)
        list = rowIndex :: list
      }
    }

    list
  }
Run Code Online (Sandbox Code Playgroud)

arrays scala

6
推荐指数
1
解决办法
6527
查看次数

从reflect.runtime.universe.MethodSymbol获取java.lang.reflect.Method

我有一些带有自定义Java注释的Scala代码...用于监视目的(JMX和ModelMBeanOperationInfo)我想将MethodSymbol转换为Java方法.仅供参考,这是我为我的注释方法检索Scala符号的代码:

val jmxannotation = ru.typeOf[EnableForMonitoring]
val m = runtimeMirror(getClass.getClassLoader)
val mSymbol = m.classSymbol(jmxe.getClass)
val mType = mSymbol.selfType
mType.declarations.foreach(symbol => {
  symbol.annotations.find(a => a.tpe == jmxannotation) match {
    case Some(_) => {
      info(s"(A) For $symbol on $jmxe, annotated for monitoring")
      val ms = symbol.asMethod
      // TODO: HOW TO CONVERT ms to a Java Method
    }
    case None =>
  }
})
Run Code Online (Sandbox Code Playgroud)

谢谢.

scala

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

Scala类型覆盖

在以下两个答案之后编辑我正在尝试编译以下Scala代码.

  abstract class C {
    type T <: C
    def x(other: T): (T, T)
  }

  class C1 extends C {
    override type T = C1
    override def x(other: C1): (C1, C1) = (this, this)
  }

  def doSthg(cs1 : List[C]) {
    val e1 = cs1(0)
    val e2 = cs1(1)

    e1.x(e2)
  }
Run Code Online (Sandbox Code Playgroud)

但是失败并显示以下消息:

Description Resource    Path    Location    Type
type mismatch;  found   : e2.type (with underlying type Chromo[G])  required: e1.C  PI3.sc  /GA/src/org/jts/ga  line 76 Scala Problem
type mismatch;  found   : e2.type …
Run Code Online (Sandbox Code Playgroud)

scala

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

标签 统计

scala ×5

akka ×1

arrays ×1