私は部分的に適用された機能を実験してきましたが、そのようなことが起こりました。次のようなコードがあるとします。
class Color(name:String) {
override def toString = name
}
class Point(x: Int, y:Int) {
override def toString:String = "("+x +"," + y + ")"
}
class Linestyle(name: String) {
override def toString = name
}
def drawLine(width:Double, color: Color, style: Linestyle, a:Point, b: Point): Unit = {
println("Draw " + width + " " + color + " " + style + " " + " line from point: " + a + " to point " + b)
}
このような方法で 4 つのパラメーターのみを取る drawSolidLine 関数を作成しようとすると:
def drawSolidLine (c: Color, a:Point, b: Point):Unit =
drawLine(1.0, _:Color, new Linestyle("SOLID"), _:Point, _:Point)
そしてそれを呼び出してみてください
drawSolidLine(2.5, new Color("Black"),new Point(2,4), new Point(3,1))
コンパイラ エラーはありませんが、呼び出しは何も返しません。
一方、この方法で drawSolidLine を作成すると:
val drawSolidLine = drawLine(_:Double, _:Color, new Linestyle("SOLID"),
_:Point, _:Point)
前に呼び出すと、目的の出力が得られます。
Draw 1.0 Black SOLID line from point: (2,4) to point (3,1)
私は何が欠けていますか?