小编Vas*_*iuk的帖子

如何发现Scala远程演员死了?

在Scala中,当另一个(远程)actor终止时,可以通过设置trapExit标志并使用第二个actor作为参数调用link()方法来通知actor.在这种情况下,当远程actor通过调用exit()结束其作业时,通过接收Exit消息来通知第一个.

但是当远程actor以不太优雅的方式终止时(例如运行崩溃的VM)会发生什么?换句话说,本地演员如何发现远程演员不再可用?当然我更希望(如果可能的话)可以通过类似于Exit 1的消息通知本地actor,但似乎不可行.我错过了什么吗?我是否应该不断轮询远程参与者的状态(在这种情况下我不知道哪种方式最好)或者是否有更智能的解决方案?

scala fault-tolerance exit remote-actors actor

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

限制组合隐式参数和视图/上下文边界的原因是什么?

最近对Scala master的一个提交删除了将上下文/视图边界与隐式参数组合的限制.这是一个很大的改进,减少了样板量,但之前做出限制的原因是什么,以及我们现在可以预期的后果是什么?

scala implicit context-bound view-bound

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

如何存储scala actor引用?

您好我是Scala的新手,我没有弄清楚如何在第二个演员中存储演员引用,以便稍后发送消息.在我的代码中,我尝试向一个actor发送测试消息.当它收到此消息时,它应该将引用(OutputChannel)存储到第二个actor,稍后应该能够向第二个actor发送消息.我不想使用reply(),因为我只需要在调用响应时才需要发送消息.这是代码.谢谢你的帮助!

import scala.actors.Actor
import scala.actors.Actor._
import scala.collection.mutable.ArrayBuffer 
import scala.actors.OutputChannel

object testactors {

    case object TestMessage
    case object Respond

    class TestActor(name: String) extends Actor {
        private var source : ArrayBuffer[OutputChannel[Any]] = new ArrayBuffer

        def act() {
            loop {
                react{
                    case TestMessage =>
                        println("i received a TestMessage " + name)
                        source += sender
                    case Respond =>
                        println("i received a ResponseMessage " + name)
                }
            }
        }

        def sendMessage(dest: Actor) = dest ! TestMessage

        def respond = {
            println("responding... " + name)
            source(0) …
Run Code Online (Sandbox Code Playgroud)

scala actor

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

sbt web plugin:不是有效密钥:jetty-run(类似:jetty-port,jetty-context,run)

我正在尝试使用电梯网框架建立一个scala sbt项目.我正在使用

  • 斯卡拉2.9.0-1
  • sbt 0.10.1
  • 电梯2.3
  • xsbt-web-plugin 0.1.1(仅在scala 2.8.1上,见问题末尾)

(我知道最近的版本).我按照http://d.hatena.ne.jp/k4200/20110711/1310354698https://github.com/siasia/xsbt-web-plugin/blob/master/README.md获取以下sbt配置文件:

项目/ build.properties

sbt.version=0.10.1

项目/插件/ build.sbt

resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"

libraryDependencies <+= sbtVersion(v => "com.github.siasia" % "xsbt-web-plugin_2.8.1" % ("0.1.1-"+v))
Run Code Online (Sandbox Code Playgroud)

项目/ Build.scala

import sbt._
import Keys._

object BuildSettings {
  val buildOrganization = "xbaz"
  val buildScalaVersion = "2.9.0-1"
  val buildVersion      = "0.0.1"

  val buildSettings = Defaults.defaultSettings ++ Seq (
    organization := buildOrganization,
    scalaVersion := buildScalaVersion,
    version      := buildVersion)
}

object Resolvers {
  val webPluginRepo = "Web …
Run Code Online (Sandbox Code Playgroud)

scala sbt xsbt-web-plugin

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

scalatra是否会在幕后使用抑扬音?

scalatra是否在幕后使用抑扬(或反之亦然)?它们之间的主要区别是什么,你会使用哪一个?

这两个框架都受到Sinatra的启发,并且外观相同.

使用scalatra请求路由:

class ScalatraExample extends ScalatraServlet {

get("/date/:year/:month/:day") {
  <ul>
    <li>Year: {params("year")}</li>
    <li>Month: {params("month")}</li>
    <li>Day: {params("day")}</li>
  </ul>
}
Run Code Online (Sandbox Code Playgroud)

circumflex中的示例代码:

class Main extends RequestRouter {

get("/posts/:id") = "Post #" + uri("id")

}
}
Run Code Online (Sandbox Code Playgroud)

rest scala scalatra

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

Scala构造函数

Scala中以下Java代码的等价物是什么:

import java.util.Random;

public class Bool {

 private boolean door;
 Random random = new Random();

 Bool() {
  this.door = random.nextBoolean();
 }
}
Run Code Online (Sandbox Code Playgroud)

因此,当创建新的Bool对象时,门变量将自动获得随机布尔值.

scala

6
推荐指数
2
解决办法
5568
查看次数

Scala在运行时分隔了continuation错误

Scala新手在这里,我刚刚下载了Eclipse 3.6.2和Scala IDE 2.0.0-beta4(使用Scala 2.9.0.final).我创建了一个新的Scala项目来尝试分隔的延续:

package delimCCTests

import scala.util.continuations._

object Test extends App {
  val result = reset {
    1 + shift { k: (Int => Int) => k(k(5)) } + 1
  }
  println(result)
}
Run Code Online (Sandbox Code Playgroud)

编译好了,然后单击Run as - > Scala应用程序并获得此异常:

Exception in thread "main" java.lang.NoSuchMethodError: scala.util.continuations.package$.shift(Lscala/Function1;)Ljava/lang/Object;
    at delimCCTests.Test$$anonfun$1.apply$mcI$sp(DelimCCTests.scala:7)
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7)
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7)
    at scala.util.continuations.package$.reset(package.scala:20)
    at delimCCTests.Test$delayedInit$body.apply(DelimCCTests.scala:6)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.App$$anonfun$main$1.apply(App.scala:60)
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
    at scala.collection.immutable.List.foreach(List.scala:45)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
    at scala.App$class.main(App.scala:60)
    at delimCCTests.Test$.main(DelimCCTests.scala:5)
    at delimCCTests.Test.main(DelimCCTests.scala)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我错过了一些配置吗?

BTW我以为编译器推断了延续的类型?本文 …

continuations scala delimited-continuations

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

SBT Web插件:获取ScopedKey时出错(范围(此,选择(ConfigKey(容器)),此,此),全类路径)

我正在尝试用sbt设置scala web项目.我有以下设置.

  • 斯卡拉2.9.0-1
  • sbt 0.11.0
  • xsbt-web-plugin 0.2.1

项目/ plugins.sbt

libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-web-plugin" % (v+"-0.2.1"))
Run Code Online (Sandbox Code Playgroud)

项目/ TaskTrackerBuild.scala

import sbt._
import com.github.siasia._
import WebPlugin._
import PluginKeys._
import Keys._
/**
 * Main sbt build file for the task-tracker project.
    *
 */
object TicketingCoreProject extends Build {
  val ticketingVersion = "1.0.0-SNAPSHOT"
  val Organization = "org.sansoft"
  val ScalaVersion = "2.9.0-1"

  val jodaTime = "joda-time" % "joda-time" % "1.6"
  val scalaTime = "org.scala-tools.time" % "time_2.8.0" % "0.2"
  val casbah = "com.mongodb.casbah" % …
Run Code Online (Sandbox Code Playgroud)

scala sbt xsbt-web-plugin

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

是否有可能在.java和.scala类之间存在循环依赖?

假设我在.java文件中定义了A类,在.scala文件中定义了B类.
类A使用类B和类B使用类A.
如果我使用java编译器,我将有编译错误,因为类B尚未编译.如果我使用scala编译器,则不会找到类A. 有没有可以一起编译的编译器?

java compiler-construction scala scala-java-interop

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

我在哪里可以找到Mnesia源代码?

我在很多文档中都看到过Mnesia已经被爱立信开源了,但直截了当的谷歌搜索并没有帮助我找到代码库...

Mnesia仍然是开源的吗?

erlang mnesia

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

Scala/Lift:通过Eclipse设置hotdeploy?

如何在Eclipse中为Scala/Lift项目设置hotdeploy?

基本上,我希望能够

  1. 建立一个新项目,例如lift-archetype-basic
  2. 启动jetty:从某些运行配置或通过终端运行
  3. 能够在Eclipse中编辑Scala文件,保存/自动编译
  4. 在浏览器中刷新Web页面并查看更新.

http://wiki.liftweb.net/index.php/Using_eclipse_hotdeploy上的教程已过时,我真的无法弄清楚如何设置它.

我现在有

  • Eclipse 3.5
  • Maven IAM插件版本0.11
  • Scala插件2.8.0.RC6

我应该使用任何其他版本或插件吗?

eclipse scala lift hotdeploy scala-2.8

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

Scala autoboxing和Java Map

我有一个Java方法接受类型的参数Map<Long, Foo>.我试图在Scala 2.8.1中为该方法编写单元测试并传入一个文字Map[Long, Foo].

我的代码看起来像这样:

import collection.JavaConversions._
x.javaMethod(asJavaMap(Map(1L -> new Foo, 2L -> new Foo)))
Run Code Online (Sandbox Code Playgroud)

编译器给我以下错误:

error: type mismatch;
found   : scala.collection.immutable.Map[scala.Long,Foo]
required: scala.collection.Map[java.lang.Long,Foo]
Run Code Online (Sandbox Code Playgroud)

我也试过了

import collection.JavaConverters._
x.javaMethod(Map(1L -> new Foo, 2L -> new Foo))
Run Code Online (Sandbox Code Playgroud)

import collection.JavaConversions._
x.javaMethod(Map(1L -> new Foo, 2L -> new Foo))
Run Code Online (Sandbox Code Playgroud)

并得到错误:

error: type mismatch;
found   : scala.collection.immutable.Map[scala.Long,Foo]
required: java.util.Map[java.lang.Long,Foo]
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

java autoboxing scala scala-java-interop

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