Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule Zad2 do
- # Казваме, че искаме аргумента да не е празен масив и да е масив от цели числа
- # И че функцията ще двойка(две променливи в една с индекси) или tuple
- @spec takeNumbers(nonempty_list(integer())) :: tuple()
- # Дефинираме си функцията с аргументите
- def takeNumbers(list) do
- # Enum.take_while приема два аргумента.
- #
- # Първият е масива, който да обходи
- # Вторият е функция, с която да определи кога да спре да обхожда масива
- #
- # Докато условието във функцията е изпълнено, обхождането на масива ще продължи
- #
- # Като резултат, от обхождането се прави нов масив с тези елементи, които вече са обходени.
- #
- numbers = Enum.take_while(list, fn number -> rem(number, 2) == 0 end)
- # Събираме всичките елементи от новият масив
- sum = Enum.sum(numbers)
- # Създаваме си tuple като първата променлива съдържа сумата на числата,
- # а втората променлива съдържа дали сумата е четна или не - boolean.
- {sum, rem(sum, 2) == 0}
- end
- end
- numbers = [2, 4, 6, 4, 5]
- # Вземаме двата аргумента върнати от функцията като tuple като две отделни променливи
- {sum, isSumEven} = Zad2.takeNumbers(numbers)
- # Изписваме ги на екрана чрез конкатенация
- IO.puts('Sum: #{sum} -- Is Sum Even: #{isSumEven}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement