Использовать черту scala в объекте scala - PullRequest
0 голосов
/ 21 мая 2018

Итак, я получил эту Черту:

trait Ammo {
val maximum: Int
private var amount: Int = 0
val calibre: Calibre.Value
val metric: Metric.Value

def getAmount(): Int = return amount
def setAmount(i: Int): Unit = amount = i

def need(): Unit

override def toString(): String = return (amount + " " + metric.toString() + " of " + calibre.toString())

def difference(): Int = maximum - amount

def getMaximum(): Int = maximum

def reset() = amount = 0

def incAmount(i: Int) = amount += 1 }

Я также создал Ракеты Черты, которые расширяют Боеприпасы

trait Rockets extends Ammo {
val calibre = Calibre.Rocket
val metric = Metric.Pods

def need(): Unit = Evaluator.getSupplyArray()(4) += difference()  }

Теперь у меня есть объект, в котором я хочу получить доступ кКалибр Ракет

object Evaluator {
def test() = print(Rockets.calibre) //???

но способ, которым я пытаюсь это не работает.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Для упрощения вещей вы можете создать объект-помощник , например:

object Rockets extends Rockets

Теперь вам не нужно инициализировать его каждый раз, когда вы хотитеиспользовать это.Всего:

println(Rockets.calibre)

0 голосов
/ 21 мая 2018

Rockets - это черта (то же самое относится и к классу), а не экземпляр (или объект).

Вам необходимо создать его экземпляр:

val rocketsInstance = new Rocket {...}
print(rocketsInstance.calibre)
...