小编Vas*_*iuk的帖子

构建基于Actor的系统的设计模式/最佳实践

我正在努力寻找任何适当的链接来设计模式,最佳实践或良好的基本架构原则,这些原则应该用于构建基于Actor的应用程序.我知道的那几个是:

博客文章,文章,WIKI,指南

文件

图书

实现

  • Akka框架(Scala中演员的替代实现,具有多个Erlang行为的端口以及许多其他演员的重新演绎模式)
  • Scalaz Actors(演员的作曲,策略和承诺)

演讲

erlang scala actor

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

从Maven迁移到SBT

如您所知,SBT以某种方式与Maven兼容 - SBT识别简单的Maven POM,并且可以使用其中指定的依赖项和存储库.但是,SBT wiki说,如果在SBT项目定义中指定了内联依赖项,POM将被忽略(因此在这种情况下使用两者都是不可能的):

当存在内联依赖性声明时,将忽略Maven和Ivy配置(pom.xml和ivy.xml).

有谁知道,如果存在从Maven POM到SBT项目定义的任何转换器(将POM的XML转换为项目定义Scala代码)?我正在考虑编写这样的脚本(这将有助于将我的旧Scala/Maven项目迁移到SBT),但是首先想知道这个功能是否已经存在.

java scala pom.xml maven sbt

39
推荐指数
4
解决办法
2万
查看次数

将Java迁移到Scala

在将现有Java代码库逐步迁移到Scala时,需要注意哪些最重要的要点和解决方法?具有(可能非常长)的中间阶段,其中两种语言都在使用中.

我正在考虑的事情是:

  • 不同的集合层次结构
  • Scala无法很好地处理的Java构造
  • Scala构造在Java中使用是不切实际的
  • 构建工具
  • 编译顺序
  • 框架中的不变性支持
  • 等等

java migration scala scala-java-interop

28
推荐指数
3
解决办法
3454
查看次数

请解释使用Option的orNull方法

Scala的Option类有一个orNull方法,其签名如下所示.

orNull [A1 >: A](implicit ev : <:<[Null, A1]) : A1
Run Code Online (Sandbox Code Playgroud)

我被隐含的东西弄糊涂了.有人请说明如何使用它,理想情况下是一个例子吗?

api scala scala-java-interop

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

可选参数值是否可能依赖于Scala中的另一个参数

有没有人知道Scala中是否有类似的东西:

case class Thing(property:String)

def f(thing:Thing, prop:String = thing.property) = println(prop)
Run Code Online (Sandbox Code Playgroud)

上面的代码没有编译; 给错误error: not found: value thingthing.property

以下显示了预期的行为:

f(Thing("abc"), "123") // prints "123"
f(Thing("abc"))        // prints "abc"
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使prop参数成为一个Option[String]并在函数定义中进行检查,但我想知道是否有一种方法可以使用2.8.0中的新命名/默认参数支持.

scala default-value named-parameters scala-2.8

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

Scala中的参数化数据类型

在阅读Wouter Swierstra撰写的文章"数据类型单点"时,我一直坚持将以下Haskell代码翻译成Scala:

data Expr f = In (f (Expr f ))
Run Code Online (Sandbox Code Playgroud)

Expr 是用于表示算术表达式的数据类型,具体表达式的编写方式如下:

data Val e = Val Int
type IntExpr = Expr Val

data Add e = Add e e
type AddExpr = Expr Add
Run Code Online (Sandbox Code Playgroud)

我的问题是在Scala 中实现f(可能被认为是构造函数的签名).

PS定义两个签名的副产品,稍后您可以组合数据类型,获得类型的表达式Expr (Val :+: Add ):

data (f :+: g) e = Inl (f e) | Inr (g e)

addExample :: Expr (Val :+: Add )
addExample = In (Inr (Add (In …
Run Code Online (Sandbox Code Playgroud)

haskell types scala

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

如何强制解释器显示完整的堆栈跟踪?

有没有办法强制Scala解释器(通过SBT启动)打印完整的堆栈跟踪.默认情况下,显示少于10行:

scala> new CacheMonitoringClient
javax.management.InstanceNotFoundException: com.bea:Name=DomainRuntimeService,Type=weblogic.management.beanservers.domainrun
time.DomainRuntimeServiceMBean
        at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:195)
        at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224)
        at javax.management.remote.rmi.RMIConnectionImpl_921_WLStub.getAttribute(Unknown Source)
        at weblogic.management.remote.common.RMIConnectionWrapper$11.run(ClientProviderBase.java:498)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147)
        at weblogic.security.Security.runAs(Security.java:61)
        at weblogic.management.remote.common.RMIConnectionWrapper.getAttribute(ClientProviderBas...
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我正在使用try { new CacheMonitoringClient } catch { case ex => ex.printStackTrace}(显式包装抛出我感兴趣的异常的调用),但那真的很丑......

interpreter scala sbt

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

Clojure协议与Scala结构类型

在观看了Rich Hickey对Clojure 1.2 协议的采访,并且对Clojure知之甚少之后,我对Clojure协议提出了一些问题:

  • 它们是否打算与Scala中的结构类型做同样的事情?协议对结构类型(性能,灵活性,代码清晰度等)有什么好处?它们是通过反思实现的吗?
  • 有关与Scala的互操作性的问题:可以使用协议而不是Scala中的结构类型吗?它们可以在Scala中扩展(如果'扩展'术语可以应用于协议)吗?

scala language-design protocols clojure structural-typing

10
推荐指数
3
解决办法
2315
查看次数

如何使用sbt 0.11部署Web应用程序?

SBT 0.11似乎缺少码头和码头命令.无论是那个还是我做错了什么.我只是在运行sbt,然后尝试运行jetty-run.我在src/main/webapp/WEB-INF/web.xml中定义了一个web.xml文件,其中包含以下信息:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"> </web-app>
Run Code Online (Sandbox Code Playgroud)

我只是尝试使用最新的SBT部署一个空白的网络应用程序.我找不到任何文档或更新的示例.有任何想法吗?

先感谢您.

scala jetty web-deployment sbt xsbt-web-plugin

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

使用原语从Scala调用Java vararg方法

我在Java中有以下代码:

public class JavaClass {

    public static void method( Object x ) {
    }

    public static void varargsMethod( Object... x ) {
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试从Scala访问它时,

object FooUser {
  JavaClass.method(true)
  JavaClass.varargsMethod(true) // <-- compile error
}
Run Code Online (Sandbox Code Playgroud)

我得到以下编译错误:

类型不匹配; found:Boolean(true)required:java.lang.Object注意:基本类型不会隐式转换为AnyRef.你可以通过施放x.asInstanceOf [AnyRef]来安全地强制拳击

错误消息是非常有用的,并显示如何修复错误,但我想知道为什么编译器(显然)很乐意隐式转换scala.Boolean一个方法调用而不是另一个.这是一个错误还是故意的?

更新以添加: 我正在使用Scala 2.8.如果我制作varargsMethod签名

public static <T> void varargsMethod(T... xs) {
Run Code Online (Sandbox Code Playgroud)

相反,那么错误也会消失.我仍然感到困惑,为什么编译器无法搞清楚.

java interop scala variadic-functions primitive-types

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