Определить, если числа в списке меньше, чем один в параметре - Scala - PullRequest
0 голосов
/ 17 октября 2019

Напишите функцию, которая на входе принимает два параметра: список целых чисел и число. Выход возвращает логическое значение. Функция возвращает значение «истина», если все числа в списке меньше числа, указанного во втором параметре. В противном случае функция возвращает «false».

Мой код:

def less [A](list:List[A], number:Int):Boolean =
  if (list == Nil) false
  else ((List.head < number) && less[A](list:List.tail, number:Int))


less(List(1, 2, 3, 4), 5)
less(List(6,1,2,3),6)

Сообщение об ошибке в IntelliJ:

В строке 3: ошибка: значение заголовка равноне является членом объекта List

else (List.head

^

В строке 3: ошибка: тип tail не является членом объекта List

Мой вопрос: что я должен улучшить в этом коде, чтобы он работал?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Очень похоже на домашнюю работу ...

В Scala есть функция forall, которая может проверять предикат для всех значений в коллекции и возвращает Boolean.

def less(xs: List[Int], number: Int) = xs.forall(x => ???)

0 голосов
/ 17 октября 2019

Я думаю, вы хотите что-то вроде этого:

def less (list:List[Int], number:Int):Boolean =
  if (list == Nil) true
  else ((list.head < number) && less(list.tail, number))


less(List(1, 2, 3, 4), 5)//true
less(List(6,1,2,3),6)//false

Но вы должны просто использовать forall, как @Brian сказал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...