Akka Streams库已经提供了大量文档.然而,对我来说,主要的问题是它提供了太多的材料 - 我觉得我必须学习的概念数量让我感到非常不知所措.很多例子显示出非常重量级,并且不能轻易地翻译成现实世界的用例,因此非常深奥.我认为它提供了太多的细节而没有解释如何一起构建所有构建块以及它如何帮助解决特定问题.
有源,汇,流,图阶段,部分图,物化,图DSL和更多,我只是不知道从哪里开始.该快速入门指南,就是要一个首发位置,但我不明白.它只是抛出上面提到的概念而不解释它们.此外,代码示例无法执行 - 缺少部分使我或多或少无法遵循文本.
任何人都可以解释概念源,汇,流,图阶段,部分图,物化以及其他一些我用简单的单词和简单的例子来解释的东西,这些例子不能解释每一个细节(并且可能不需要在一开始)?
最近斯卡拉兹引起了我的注意.它看起来很有趣,但我没有找到任何关于图书馆的好介绍.看起来scalaz融合了很多来自haskell和数学的想法.我发现的大多数文章都假设您已经对这些概念感到满意.
我正在寻找的是逐步介绍图书馆和基本概念 - 从简单和基本概念到更高级(基于基础).
我也看了一些例子,但是我很难找到应该开始学习库的地方.
有人可以向我推荐一些好的scalaz介绍或教程(涵盖基础知识和高级概念)吗?或者在答案中给我起点.
谢谢大家的好消息!我总结了所有的答案,并在我的博客中添加了一些链接:
http://hacking-scala.org/post/49050104489/scalaz-resources-for-beginners
对于那些寻找Scalaz API文档的人来说,他们在这里:
http://docs.typelevel.org/api/scalaz/nightly/index.html#package
Akka的新手问题 - 我正在阅读Akka Essentials,有人可以解释一下Akka Stop/Poison Pill与Kill之间的区别吗?这本书只提供了一个小小的解释"杀死同步与毒药是异步的".但是以什么方式?调用actor是否在此期间锁定线程?儿童演员是否在杀人,后停止等情况下被通知?一个概念与另一个概念的使用示例?
非常感谢!
在闭包之外调用函数时会出现奇怪的行为:
任务不可序列化:java.io.NotSerializableException:testing
问题是我需要在类中的代码而不是对象.知道为什么会这样吗?Scala对象是否已序列化(默认?)?
这是一个有效的代码示例:
object working extends App {
val list = List(1,2,3)
val rddList = Spark.ctx.parallelize(list)
//calling function outside closure
val after = rddList.map(someFunc(_))
def someFunc(a:Int) = a+1
after.collect().map(println(_))
}
Run Code Online (Sandbox Code Playgroud)
这是一个非工作的例子:
object NOTworking extends App {
new testing().doIT
}
//adding extends Serializable wont help
class testing {
val list = List(1,2,3)
val rddList = Spark.ctx.parallelize(list)
def doIT = {
//again calling the fucntion someFunc
val after = rddList.map(someFunc(_))
//this will crash (spark lazy)
after.collect().map(println(_))
}
def someFunc(a:Int) …Run Code Online (Sandbox Code Playgroud) 这听起来像个愚蠢的问题,但我在互联网上找到的只是垃圾.我根本无法将类型的元素添加T到列表中List[T].我试过myList ::= myElement但似乎它创建了一个奇怪的对象并且访问myList.last总是返回放在列表中的第一个元素.
假设我有一个代表角色的案例类,不同社交网络上的人.该类的实例是完全不可变的,并且保存在不可变集合中,最终由Akka actor修改.
现在,我有一个包含许多字段的case类,我收到一条消息,说我必须更新其中一个字段,如下所示:
case class Persona(serviceName : String,
serviceId : String,
sentMessages : Set[String])
// Somewhere deep in an actor
val newPersona = Persona(existingPersona.serviceName,
existingPersona.serviceId,
existingPersona.sentMessages + newMessage)
Run Code Online (Sandbox Code Playgroud)
注意我必须指定所有字段,即使只有一个更改.有没有办法克隆existingPersona并只替换一个字段,而不指定所有不更改的字段?我可以将其作为特征编写并将其用于我的所有案例类吗?
如果Persona是一个类似Map的实例,那么很容易做到.
有什么区别:
def even: Int => Boolean = _ % 2 == 0
Run Code Online (Sandbox Code Playgroud)
和
val even: Int => Boolean = _ % 2 == 0
Run Code Online (Sandbox Code Playgroud)
两者都可以称为even(10).
我可以在Predef的API文档中看到它们是泛型函数类型(From)=> To的子类,但就是这样.嗯什么?也许某处有文档,但搜索引擎不能很好地处理"<:<"之类的"名称",所以我无法找到它.
后续问题:我什么时候应该使用这些时髦的符号/类,为什么?