小编Lal*_*lin的帖子

Akka Kill vs. Stop vs. Poison Pill?

Akka的新手问题 - 我正在阅读Akka Essentials,有人可以解释一下Akka Stop/Poison Pill与Kill之间的区别吗?这本书只提供了一个小小的解释"杀死同步与毒药是异步的".但是以什么方式?调用actor是否在此期间锁定线程?儿童演员是否在杀人,后停止等情况下被通知?一个概念与另一个概念的使用示例?

非常感谢!

scala akka

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

扩展scala案例类而不经常复制构造函数的vals?

有没有办法扩展一个案例类,而不是不断地沿途获取新的val?例如,这不起作用

case class Edge(a: Strl, b: Strl)
case class EdgeQA(a: Strl, b: Strl, right: Int, asked: Int) extends Edge(a, b)
Run Code Online (Sandbox Code Playgroud)

"a"与"a"冲突,所以我被迫重命名为a1.但我不想要各种额外的"a"公开副本,所以我把它变成了私人的.

case class Edge(a: Strl, b: Strl)
case class EdgeQA(private val a1: Strl, private val b1: Strl, right: Int, asked: Int) extends Edge(a, b)
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎并不干净..我错过了什么吗?

inheritance scala

58
推荐指数
4
解决办法
5万
查看次数

Scala Futures - 内置超时?

从官方教程参考中我还没有完全理解未来的一个方面.http://docs.scala-lang.org/overviews/core/futures.html

scala中的期货是否有某种内置的超时机制?假设下面的示例是一个5千兆字节的文本文件......"Implicits.global"的隐含范围是否会导致onFailure以非阻塞方式触发或者是否可以定义?没有某种默认的超时时间,这是否意味着它既不会成功也不会失败?

import scala.concurrent._
import ExecutionContext.Implicits.global

val firstOccurence: Future[Int] = future {
  val source = scala.io.Source.fromFile("myText.txt")
  source.toSeq.indexOfSlice("myKeyword")
}
firstOccurence onSuccess {
  case idx => println("The keyword first appears at position: " + idx)
}
firstOccurence onFailure {
  case t => println("Could not process file: " + t.getMessage)
}
Run Code Online (Sandbox Code Playgroud)

concurrency scala

53
推荐指数
6
解决办法
3万
查看次数

Scala的MapLike,ListLike,SeqLike等每个如何与Map,List,Seq进行比较?

有人可以帮我理解Scala在集合API中的各种"喜欢"特征.我一直在阅读并试图比较每一个没有运气.我想我可以看到Map,例如,扩展MapLike - 添加2个具体方法.但这引出了为什么要这样做的问题?为什么不在Collections API中使用1个Map特征而不是Map和MapLike?

谢谢!

collections scala traits

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

不可改变的阶级和特征?

我似乎遇到了很多问题,学习在Scala中使用不可变的主体,其中一个是克隆(或者更确切地说是派生)来自相关对象的概念.

其中一个问题是混合特征的概念 - 例如

trait helper //modifies some kind behavior.. assume we want to to continue down the line

class A (val x:int) {

 def add(y:int) = new A(x + y)
}

Example extends App {

 val a =new A(5) with helper
 val b = a.add(10)  // mixed trait disappears

}
Run Code Online (Sandbox Code Playgroud)

现在这只是一个非常复杂的问题的一个非常简单的版本,我今天已经围绕各种类,工厂方法来隐藏A类,等等.如果我们只处理一个特征,我知道我可以简单地测试它和根据需要发送它.但如果可能存在3个或更多特征,我该怎么办呢?我将不得不测试所有不切实际的组合.

在遵守功能设计原​​则的同时,如何实例化(克隆)具有各种特征的现有对象和/或修改其某些方面?

非常感谢, - 蒂姆

scala

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

在Scala中具有多参数或序列的构造函数?

这是基本的例子..我不能让scala认识到我希望能够以两种不同的方式初始化我的类:通过现有序列,或使用多个参数.

我收到的错误是:

double definition:方法apply:(params:Int*)chorle.scala.tests.MultiParam和方法apply:(pList:
Seq [Int])第9行的chorle.scala.tests.MultiParam在擦除后有相同的类型:( params: SEQ)chorle.scala.tests.MultiParam

哪个好,我得到了这里发生的事情 - 后期编译两个函数都会产生相同的标题签名.然而,在实践中它们的工作方式不同 - 我无法调用:如果我只有apply(Seq)版本,则应用(1,2,3)...并且我不能使用apply(seq)其他方式.我知道可以修补实际函数调用的各种方法,但是如何正确地解决这个问题并且只在课堂上进行一次?谢谢!

class MultiParam protected (pList:Seq[Int]) 

object MultiParam {
  def apply(pList:Seq[Int]): MultiParam = new MultiParam(pList)
  def apply(params: Int *): MultiParam = new MultiParam(params)


} 
Run Code Online (Sandbox Code Playgroud)

scala

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

为什么Scala有时会忽略明确定义的类型?

所以这就是我在Scala遇到的各种情况下遇到的问题 - 它似乎忽略了隐含的类型,即使情况很明显.当然,这可能是我承认的理解,但是当涉及到下划线的占位符时,我一直遇到麻烦.例如下面(这是虚构的,只是为了证明这一点).特征X的第二个位置必须是<:X [ , ]某种类型.这里没有歧义 - 所以scala看到这个位置的任何地方,无论它的编码有多弱 - 联系人都是X,我应该可以访问像"doX"这样的函数.这不是无可争辩的吗?无论我在代码中处理那个位置有多糟糕,我都必须至少得到X.为什么当你深入到类型系统时,Scala会不断忽略这个事实?任何指针都将不胜感激,谢谢!

object TestRun extends App {

  trait X[T, Y<:X[_,_]] {
    def doesX:Unit
    def providesY:Y
  }

  class Test extends X[Int,Test]{
    override def doesX: Unit = println("etc..")
    def providesY:Test =  new Test
  }

  val a:X[_,_] = new Test //yes I know I could define a better here, its just to demo. I shouldn't have to explicitly relabel the 2nd _ as _<:X[_,<:X[ etc..
  val b = a.providesY //clearly this has to be at …
Run Code Online (Sandbox Code Playgroud)

generics types scala

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

Scala中的多特征构造错误

有人可以帮我理解这里的错误吗?我想我理解Scala中具有特征的匿名类构造.但是,当我尝试应用多个特征时,我得到一个错误,期待";" 或必要的声明结束.如果我也以这种方式声明一个类(具有需要匿名实现代码行的多个特性),同样的问题似乎也适用吗?Line Test 3在下面失败了.谢谢.

class TestTraits 

trait A {def x:Int}
trait B {def y:Int}



object TestTraits {

  def main(args: Array[String]): Unit = {

     val test1 = new TestTraits with A {def x=22}  //OK

     val test2 = new TestTraits with B {def y=33} //OK

     val test3 = new TestTraits with A {def x=22} with B {def y=33} //Errors: - ';' expected but 'with' 


  }  
}
Run Code Online (Sandbox Code Playgroud)

scala anonymous-class

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

在Scala中读取基本文件属性?

我正在尝试使用Scala获取基本文件属性,我的参考是这个Java问题:

用Java确定文件创建日期

这段代码我试图在Scala中重写:

static void getAttributes(String pathStr) throws IOException {
    Path p = Paths.get(pathStr);
    BasicFileAttributes view
       = Files.getFileAttributeView(p, BasicFileAttributeView.class)
              .readAttributes();
    System.out.println(view.creationTime()+" is the same as "+view.lastModifiedTime());
  }
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是这行代码..我不明白如何使用scala以这种方式传递类...或者为什么Java首先坚持这个而不是使用实际的构造对象作为参数.有人可以帮我写这行代码以正常运行吗?我必须使用错误的语法

val  attr = Files.readAttributes(f,Class[BasicFileAttributeView])
Run Code Online (Sandbox Code Playgroud)

scala

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