函数eventloop在Scala Actors中做了什么以及它对什么有用?
实现以下示例的最佳方法是什么?
Actor server接收Requests,处理它们,Response
为每个创建一个新的Request并将其发送Response回Request发送方.
演员client发送Requests和接收Responses.
所有这些通信都是异步的,因此它使用react.
这只是一个例子,所以它不应该处理所有这些情况,如server下降,client卡住等.它应该只是简洁和富有表现力.
如果A出现在逆变位置,Seq [+ A]如何在A中是协变的:
def :+ (elem: A) : Seq[A] ?Run Code Online (Sandbox Code Playgroud)
据我所知,方法参数类型是逆变位置.我错过了什么?
让那里有几个单独的DAO类OrderDAO,ProductDAO并CustomerDAO在数据库中存储/检索数据并共享一个实例DataSource(数据库连接工厂).
为了创建一个DataSource实例并将其插入,DAOs我们通常使用Spring DI.现在我想在没有任何DI框架的Scala中做到这一点.
我已经阅读了关于蛋糕模式的内容,看起来我应该做以下事情:
trait DatabaseContext { val dataSource:Datasource }
trait OrderDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
trait ProductDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
object DAOImpl extends OrderDAO with ProductDAO with DatabaseContext {
val dataSource = ... // init the data source
}
Run Code Online (Sandbox Code Playgroud)
我能正确理解蛋糕图案吗?
我可以DAOs使用蛋糕模式以不同方式实现这些吗?
像Spring这样的DI框架没有提供什么?
如何创建单独的OrderDAOImpl和ProductDAOImpl对象共享同一个DataSource实例而不是一个大DAOImpl?
有没有办法在Scala中定义stream一个backtracking算法?
例如,以下backtracking算法打印给定大小的所有"二进制"字符串.
def binaries(s:String, n:Int) {
if (s.size == n)
println(s)
else {
binaries(s + '0', n)
binaries(s + '1', n)
}
}
我相信我可以stream使用另一种迭代算法定义一个给定大小的"二进制"字符串.不过我想知道我是否可以将上面的回溯算法转换为stream.
据我所知,方法在原始地图filterKeys上MapLike创建一个包装器.所以,如果我执行下面的代码m将是一个10K包装链和原始地图链.
var m = Map(1 -> "one", 2 -> "two")
for(1 <- 0 until 10000) {m = m.filterKeys(_%2 == 0)}
现在我认为调用会m.contains导致堆栈溢出,但它不会发生.你能解释一下这个案子的情况吗?
假设我有一张地图m: Map[Any, Int].现在我只想(String, Int)从中获取条目m并创建m1: Map[String, Int]包含这些条目的新地图.
我正在尝试执行以下操作:
val m1: Map[String, Int] = m collect {case e:(String, Int) => e}Run Code Online (Sandbox Code Playgroud)
它似乎工作但我得到一个警告:非变量类型参数类型模式(String,Int)中的字符串是未选中的,因为它被擦除消除.
我该如何摆脱警告?
假设我想在Scala中编写以下逻辑
val xdir = System.getProperty("XDir")
if (xdir == null)
error("No XDir") // log the error and exit
val ydir = System.getProperty("YDir")
if (ydir == null)
error("No YDir")
if (!new File(xdir).isDirectory)
error("XDir is not a directory")
if (!new File(ydir).isDirectory)
error("YDir is not a directory")
if (!new File(xdir).exists)
error("XDir does not exis")
if (!new File(ydir).exists)
error("YDir does not exist")
...
(and so on)
在Scala中编写此验证链的最佳方法是什么?
假设我需要并行处理给定文件夹中的文件.在Java中,我将创建一个FolderReader线程来读取文件夹和FileProcessor线程池中的文件名.FolderReader读取文件名并将文件处理函数(Runnable)提交给池执行程序.
在Scala中,我看到两个选项:
FileProcessoractor 池并安排一个文件处理函数Actors.Scheduler.是否有意义?什么是最好的选择?
我正在编写一个HTML页面,并注意到HTML标头标签并不完全一致.其中一些需要关闭标签,一些则不需要.
例如,scripttag确实需要结束标记但meta不需要.现在我想知道为什么?
scala ×9
actor ×3
akka ×1
backtracking ×1
collections ×1
covariance ×1
dao ×1
html ×1
stream ×1
type-erasure ×1