2017-02-09 12 views
-3

Эй, ребята, я новичок в Скале, и я не Knowe то, что я делаю wrrong, чтобы получить право станд в заявлении выход:новичок Scala для-постижений и функции

def prim(n:Int): (Boolean, List[Int]) = divsers(n) -> List(1,n) //flatMap for-comprehensions 

def divsers(n:Int):Boolean= 
(for{ 
    d <- 1 to n 
    if((n%d)->0) 
    }yield(d) // <- what i need to put here to make it work with the function prim? 
) 
prim(11); 

Я просто хочу, чтобы проверить, если число - простое число. Я действительно должен сказать, что у меня возникли проблемы с синтаксисом и typs.Even, если я ставлю только «истинный» в доходности, он не работает?

+0

Я не знаю, почему кто-то дает мне -1? вам не нужно писать султу, но просто дайте мне совет, чтобы решить эту проблему. Может быть, ссылка. – thenewOne1234567890

ответ

3

Вы делаете все виды вещей, которые не имеют никакого смысла.

divsers(n) -> List(1,n) Какой смысл возвращать кортеж, который является вторым элементом, является списком из 2 Int s? 1-й Int всегда 1, а второй Int - это всегда число, переданное в качестве аргумента prim().

if((n%d)->0) Здесь вы создали другой кортеж. Вероятно, вы хотите сказать if (n%d) > 0.

yield ?for понимание идет через последовательность чисел от 1 до n. Некоторые из них пройдут через ваше состояние if, а некоторые - нет. Теперь у вас есть новый список чисел. Как вы должны превратить это в Boolean, зависит от вас.

+0

ОК, я удаляю смысловую часть (я переводил псевдокод в scala). Но я до сих пор не понимаю последнюю часть. Я знаю, что некоторые из последовательностей передают условие if. Но как я могу получить этого, кто передает условие if. Я думал, что этот список будет переменной «d». наконец, я делаю это, чтобы превратить их в boolen yield (d> 0). он все равно не работает :(Но спасибо за помощь. – thenewOne1234567890

+1

Если вы сделаете это «val nums = for {...} yield d', то у вас есть переменная« nums »со всеми числами, которые прошли через 'if'. Затем вы можете проверить список _that_ для любого условия, которое вы ищете. – jwvh