我正在用scala编写一个计算库.类似的功能我组成本机scala单例对象,包含一堆过程和一些静态分配的内存,用于O(1)时间数据.
此方法适用于单线程使用.但是同时从不同的线程调用库函数可能会覆盖时态数据并给调用者提供错误的答案.
我可能只是复制这个库并通过在函数局部空间内移动所有静态分配的内存来编写线程安全版本.但我更喜欢通过定义线程局部变量来避免它.
scala中有可能吗?
假设我有一个带有这样签名的函数:
def tsadd(key: Any, time: Double, value: Any)(implicit format: Format): Option[Int]
Run Code Online (Sandbox Code Playgroud)
我想创建一些包含这些函数的列表供以后评估.我该怎么做.我尝试创建一个列表,如:
val pipelineCmds:List[(String,Double,Any)(Format) => Option[Int]] = Nil
Run Code Online (Sandbox Code Playgroud)
并这样做:
pipelineCmds ++ r.tsadd(symbol, timestamp.getMillis.toDouble, value)
Run Code Online (Sandbox Code Playgroud)
但val对隐式参数格式没有很好的反应.它希望看到第一组parens后的一个].
最终目标是做类似的事情
r.pipeline { p =>
pipelineCmds.foreach(c => p.c)
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!