js.Function2,如何?

js.Function2, how to?

我正在尝试将一些 d3.js 应用程序移植到 Scala.js,只是为了学习。但目前我有点卡住了。

JS:

var diagonal = d3.svg.diagonal()
        .projection(function(d) { return [d.y, d.x]; });

如何将其转换为 scala.js?我知道我需要一个 js.Function2[Node, Double, js.Tuple2[Double,Double] 但我不知道如何制作它。

对于js.Function1来说很简单,就像这样:

private def test: (Event) => Unit = (e: dom.Event) => {
    ()
}

使用"org.singlespaced" %%% "scalajs-d3" % "0.3.3"

基本上是一样的东西,只是需要两个参数。你的例子的同源词是:

private val test2: (Node, Double) => js.Tuple2[Double, Double] = (n:Node, d:Double) => {
    (1.2, 3.5)
}

虽然更典型的说法是:

private def test2(n:Node, d:Double):js.Tuple2[Double, Double] = {
    (1.2, 3.5)
}

内联,它会是某事,例如:

val diagonal = d3.svg.diagonal()
        .projection((n:Node, d:Double) => js.Tuple2(something.y, something.x));

"something" 是因为我不明白你的 JS 示例是如何作为 js.Function2 出现的 - Function2 需要 2 个参数,而你的示例只显示 1 个。 xy 字段是 Node 吗?