我想做一个输入任务,继续用户输入并生成一堆子任务来运行.这是一个例子:
import sbt._
import Keys._
import Def.Initialize
import complete.DefaultParsers._
object TestBuild extends Build {
val sampleInput = inputKey[Seq[String]]("sample dynamic input task")
val sampleDynamic = taskKey[Seq[String]]("sample dynamic task")
override lazy val settings = super.settings ++ Seq(
sampleDynamic := Def.taskDyn {
val sources = Seq("ab", "csd", "efda")
sources.map(sampleTaskFor _).joinWith(_.join)
}.value,
sampleInput := Def.inputTaskDyn {
val sources = spaceDelimited("<arg>").parsed
sources.map(sampleTaskFor _).joinWith(_.join)
}.value
)
private def sampleTaskFor(source : String) : Initialize[Task[String]] = Def.task {
source + " : " + source
}
}
Run Code Online (Sandbox Code Playgroud)
有两个样本.第一个工作并显示带有预定义输入的简单taskDyn.第二个是用户输入的动态任务,拒绝编译我无法解释的错误 …
我伪造了一个简单的例子来检查@inline注释行为:
import scala.annotation.tailrec
object InlineTest extends App {
@inline
private def corec(x : Int) : Int = rec(x - 1)
@tailrec
private def rec(x : Int) : Int =
if (x < 3) x else {
if (x % 3 == 0)
corec(x-1)
else
rec(x-4)
}
@tailrec
private def rec1(x : Int) : Int =
if (x < 3) x else {
if (x % 3 == 0) {
val arg = x - 1
rec1(arg - 1) …Run Code Online (Sandbox Code Playgroud) 镜头是一个执行不可变记录修改的函数:它复制记录修改其内容的一部分.镜头是一个库,允许您组合镜头,以获得更复杂的修改.
我正在寻找定义反向抽象的正确术语.一些比较两个对象并返回它们之间差异的函数.这些功能也产生了一个系统.每个修改可以与细粒度描述"记录内的字段C内的字段B内的字段A"或者记录内的粗"字段C"同时表示.因此,您可以使用所需的准确度进行匹配修改.
我需要编写代码来比较记录并对其中的修改做出反应.我想避免重新发明轮子.我试图谷歌反向镜头,但淹没在不相关的输出.
我正在使用python解析日志,需要从中快速获取一些值
这是简单的等效正则表达式和用法示例
pat = re.compile("(1(2[3456]+2)+1)*")
Run Code Online (Sandbox Code Playgroud)
它没有按预期工作,只有pat.match()返回最后一个匹配组.groups()
这类问题最简单的解决方案是什么?
更新(因为维基引擎说使用编辑而不是创建新帖子):
当然,我需要重复比赛.
to_match="1232112542254211232112322421"
Run Code Online (Sandbox Code Playgroud)
正则表达式需要递归地应用两次.我能忍受,但有什么选择吗?
我编写了启动actor的示例代码,杀死它并完成执行.
object PureAkka {
def main(argv : Array[String]) = {
val actorSystem : ActorSystem = ActorSystem("main")
val actor : ActorRef = actorSystem.actorOf(Props( new Actor {
override def receive = {
case x => println(x)
}
override def preStart() = println("prestart")
override def postStop() = println("poststop")
} ) )
Thread.sleep(15000)
actor ! PoisonPill
}
}
Run Code Online (Sandbox Code Playgroud)
此代码打印:
[info] prestart
[info] poststop
Run Code Online (Sandbox Code Playgroud)
但它拒绝停止,直到我用Ctrl-C杀死进程
应用程序等待什么?我怎样才能以正确的方式阻止它?
我在不同条件下尝试了不同的集合,但我能够接收的所有更改都是置换,添加,删除和替换更改.
更新变化在什么条件下出现?什么基类,什么存储类以及生成此类事件所需的操作?
我创建了一个简单的应用程序来测试过滤列表及其相应源列表更改时的行为.我也想测试更新更改,所以我创建ObservableList了ObservableLists.它比创建具有可观察字段的其他类(如Person)更快更简单.
代码看起来如此:
ListChangeListener<ObservableList<String>> changeNotifier = new ListChangeListener<ObservableList<String>>() {
@Override
public void onChanged(Change<? extends ObservableList<String>> c) {
while (c.next()) {
if (c.wasPermutated()) {
System.out.println("permutation");
} else if (c.wasUpdated()) {
System.out.println("update");
} else {
if (c.wasRemoved()) {
System.out.println("remove");
}
if (c.wasAdded()) {
System.out.println("add");
}
if (c.wasReplaced()) {
System.out.println("replace");
}
}
}
}
};
Callback<ObservableList<String>, Observable[]> identityExtractor = new Callback<ObservableList<String>, Observable[]>() {
@Override
public Observable[] call(ObservableList<String> param) {
return new Observable[]{param};
}
};
Predicate<ObservableList<String>> nonEmptyFilter = new …Run Code Online (Sandbox Code Playgroud) 是否有任何scala库使用monad语法丰富基本scala元组.类似于Writer monad的东西,但调整了与元组的使用.
我在找什么:
val pair = (2, "as")
pair >>= (a => point(a+1))
Run Code Online (Sandbox Code Playgroud)
应该等于(3, "as").以及
for (p <- pair) yield (p+1)
Run Code Online (Sandbox Code Playgroud) 我发现了很多建议使用Timeline与KeyFrame.onFinished在计划任务的JavaFX。但是AnimationTimer文档说,它的handle方法每秒被调用 60 次。
从文档中不清楚,但似乎在内部Timeline使用AnimationTimer。这是否意味着调度的时间线解决方案强加了 CPU 密集型轮询模式?如果这实际上是 JavaFX 的工作方式,那么推荐其他哪些调度方法?
如何让所有听众获得一个可观察的值?我可以扩展类并覆盖addListener和removeListener方法将它们存储在一个集合中。但是该集合应该已经以某种方式存储在可观察值中。我怎么能拿到那套?