我正在阅读Odersky的书籍,其中有一个与电子表格相关的示例代码:
package org.stairwaybook.scells
trait Arithmetic { this: Evaluator =>
operations += (
"add" -> { case List(x, y) => x + y },
"sub" -> { case List(x, y) => x - y },
"div" -> { case List(x, y) => x / y },
"mul" -> { case List(x, y) => x * y },
"mod" -> { case List(x, y) => x % y },
"sum" -> { xs => (0.0 /: xs)(_ + _) },
"prod" -> { xs => (1.0 /: xs)(_ * _) }
)
}
“this:Evaluator”是指什么?有人能帮助理解这种特性吗?就我所见,它定义了不同的操作,它们是函数,但我看不到整个大局...
Evaluator
(因为在这种情况下,Arithmetic
可以直接扩展Evaluator
),而是Evaluator
的子类型。 - Kim Stebel