1
나는 숫자의 패리티 확인하기 위해이 모듈을 가지고 :엘 릭셔의 표준 입력에 어떻게 쓰나요?
defmodule Parity do
def start() do
continue()
end
defp continue() do
get_number()
|> parse()
|> even?()
|> print_output()
continue()
end
defp get_number() do
IO.gets("Type a number: ")
end
defp parse(input) do
String.trim(input)
|> Integer.parse
end
defp even?({ number, _ }) do
Integer.mod(number, 2) == 0
end
defp print_output(_is_even = true) do
IO.puts("This number is even!")
end
defp print_output(_is_odd) do
IO.puts("This number is odd!")
end
end
을 그리고 그것은 다음과 같이 작동
$ mix run -e Parity.start
Type a number: 4
This number is even!
Type a number: 3
This number is odd!
Type a number: 68
This number is even!
Type a number: 1
This number is odd!
Type a number: ...
가 지금은에 쓰기 번호 수있을 것 다른 모듈을 갖고 싶어 Parity
모듈의 표준 입력. 그래서 Parity.start()
을 실행 한 다음 IO.gets()
함수에 숫자를 제공해야합니다. 나는이 같은 시도 :
defmodule Bot do
def start() do
Parity.start()
provide_number()
end
defp provide_number() do
random_number()
|> IO.puts
provide_number()
end
defp random_number() do
Enum.random(0..100)
end
end
을 그리고 그것은 작동하지 않습니다.
모듈은 Parity
모듈 만 시작하지만 provide_number()
함수는 입력이 없습니다.
당신은 모든이를 실행을 단일 스레드. 'Bot.start/0'를 호출하면 결국'IO.gets/2'를 호출하는'Parity.start/0'을 호출합니다. 이제 프로그램이 앉아서 입력을 기다리고 있으며 실제로 숫자를 생성하는 부분에 코드 실행을 계속할 수 없습니다. –
무엇을하고 싶습니까? 테스트 용입니까? –
@RyanBigg 다른 모듈로 사람의 입력을 시뮬레이션하고 싶습니다. – Walerian