What I need:
trait Base {
import scala.math.{Pi=>mPi, cos=>msoc, sin=>msin}
static val Pi : Float = mPi.toFloat
static def cos(phi : Float) : Float = mcos(phi).toFloat
static def sin(phi : Float) : Float = msin(phi).toFloat
// ...
// some useful functions
}
// children use float defined pi, cos and sin without additional boilerplate
class Child1 extends Base
// ...
class Child2 extends Base
That obviously would not work. What I tried
trait Base {
import Base._
// some useful functions
}
object Base {
// utility functions
import scala.math.{Pi=>mPi, cos=>mcos, sin=>msin}
val Pi : Float = mPi.toFloat
def cos(phi : Float) : Float = mcos(phi).toFloat
def sin(phi : Float) : Float = msin(phi).toFloat
}
class Child1 extends Base {
// use sin and cos inside
}
And the compiler gives errors in Child1 that it does nothing about functions sin and cos.
How can I define a static members in a base class that would be inherited by its descendants?