我正在使用scala-graph库来构建方向图并以拓扑顺序检索其节点.由于图的拓扑顺序可能存在许多可能性,因此我需要对于相同且以相同方式构建的图的拓扑顺序具有确定性结果.
这个小应用程序突出了这个问题
import scalax.collection.Graph
import scalax.collection.GraphEdge.DiEdge
import scalax.collection.GraphPredef._
object MainApp extends App {
// Creates new graph for every call
// val is not an option
def graph: Graph[String, DiEdge] = Graph(
"A" ~> "B",
"A" ~> "C",
"A" ~> "D",
"B" ~> "E",
"B" ~> "F",
"C" ~> "G",
"C" ~> "H",
"D" ~> "F",
"D" ~> "G"
)
val results = 1 to 20 map { _ =>
graph.topologicalSort.mkString("")
}
println(results.tail.forall(_ == results.head))
}
Run Code Online (Sandbox Code Playgroud)
这个应用程序打印错误
有没有办法使用scala-graph库的api构建确定性的拓扑排序图?从头开始编写算法将是我的最后选择.
我正在使用 Laravel 5.8 和 Slick.js 为我的在线商店显示幻灯片,我编写了以下代码:
Slick.prototype.initADA = function() {
var _ = this,
numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
return (val >= 0) && (val < _.slideCount);
});
_.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
'aria-hidden': 'true',
'tabindex': '-1'
}).find('a, input, button, select').attr({
'tabindex': '-1'
});
if (_.$dots !== null) {
_.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
var slideControlIndex = tabControlIndexes.indexOf(i);
$(this).attr({
'role': 'tabpanel',
'id': 'slick-slide' + _.instanceUid + i,
'tabindex': -1
});
if (slideControlIndex !== -1) {
var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex …
Run Code Online (Sandbox Code Playgroud) 我是 akka 流的新手,想了解流中的物化是如何工作的
//Print sum of elements from 1 to 10
val newSource = Source(1 to 10)
val flow = Flow[Int].fold(0)((a, b) => a + b)
val sink = Sink.foreach(println)
val sumFuture = newSource.via(flow).toMat(sink)(Keep.left).run()
Run Code Online (Sandbox Code Playgroud)
55
它使用Keep.left
和打印值Keep.right
。两者有何不同?
我想探索Keep.left
并Keep.right
赋予不同的价值以及我们如何使用Keep.both