2014-09-07 3 views
0

Итак, есть объект с тремя значениями int. Позволяет называть этот объект синим. Я пытаюсь сделать логический метод, который возвращает true, если значение Int в синем является допустимым. Каждый Int имеет разные ограничения. Этот метод называется isBlueValidScala (x не является членом класса)

Например, синий выполнен из Ints x, y, z. Величина х должна быть от 10 до 20, а значение у и г должна быть между 30 и 50.

Так вот мой пример

case class Blue(x : Int, y : Int, z : Int){ 
     def isValidBlue(blue: Blue) : Boolean = { 
      if(Blue.x > ... && Blue.x <....... &&Blue.y <...............) 
        true 
      else 
        false 

код Но каждый раз, когда я пытаюсь запустите метод, который он говорит, что x не является членом Blue и y не является членом Blue и z не является членом Blue.

Помощь?

+0

Можете ли вы опубликовать более полный пример, демонстрирующий проблему? В частности, рассматриваемая функция и класс. –

+0

Вместо того, чтобы нас угадывать, отправьте код. – Ryan

+2

Ваш, если нет необходимости. 'if () true else false' совпадает с' ' – bmaderbacher

ответ

3

Edit: Вы должны заменить Blue.x с this.x или просто x. Blue.x пытается вызвать метод или val из сопутствующего объекта класса case, а не this экземпляр.


Это кажется как вы хотите что-то вроде этого:

case class Blue(x: Int, y: Int, z: Int) { 
    def isValid: Boolean = ((x < 21 && x > 9) && (y > 29 && y < 51) && (z > 0)) // filled in z condition with whatever 
} 

if(..) true else false избыточно при возврате Boolean, так как условие if возвращает то же значение Boolean.

scala> val test = Blue(1,2,3) 
scala> test.isValid 
res0: Boolean = false 

scala> val test = Blue(10,30,3) 
scala> test.isValid 
res1: Boolean = true 
+0

Это дало ошибку в том, что аргументов недостаточно, но после того, как я сделал это, никаких аргументов он отлично работает. Благодаря! – user3312944

Смежные вопросы