假设我有一个正则表达式模式我想匹配许多字符串.
val Digit = """\d""".r
Run Code Online (Sandbox Code Playgroud)
我只想检查给定的String是否与Regex完全匹配.在Scala中执行此操作的好方法是什么?
我知道我可以在正则表达式上进行模式匹配,但在这种情况下,这在语法上并不是很令人满意,因为我没有要提取的组:
scala> "5" match { case Digit() => true case _ => false }
res4: Boolean = true
Run Code Online (Sandbox Code Playgroud)
或者我可以回到基础Java模式:
scala> Digit.pattern.matcher("5").matches
res6: Boolean = true
Run Code Online (Sandbox Code Playgroud)
这也不优雅.
有更好的解决方案吗?
在Akka中,除了使用使用RPC样式编程模型的"Typed Actor"API之外,有没有办法将actor限制为特定的静态类型?
我可以在Akka中使用消息传递样式而不会在actor边界处丢弃静态类型安全吗?
例如,我想使用这样的代码:
sealed abstract class FooMessage
case object Foo extends FooMessage
case object Bar extends FooMessage
class FooActor extends Actor[FooMessage] {
def receive = {
case Foo => () // OK
// Would raise a compiler error:
// case s: String => error("Can't happen, String is not a subtype of FooMessage")
}
}
val fooActor = actorOf[FooActor]
fooActor ! Foo // OK
// Won't compile:
fooActor ! "Hello"
Run Code Online (Sandbox Code Playgroud)
也许人们必须扩展一些基本特征或者具有Either
允许系统级消息(Exit
等等)的构造.
我知道Camel支持Scala DSL.除此之外
对于基于Camel的项目,Scala完全替换Java(该语言)是否现实?
已知存在哪种已知问题?
这些问题存在哪些变通方法(除了使用Java)?
我主要是寻找更少的boilerplaty代码.