入力された数字でパターンマッチングさせたい
入力された数字番目のフィボナッチ数を計算して出力するプログラムを作ったのですが、数字に応じて序数の、st,nd,rd,thを場合分けしようとした際、以下のようにcondで条件分岐させる以外にパターンマッチングなどうまい方法はあるでしょうか.
P.S.
Elixirでの標準入力でもっとうまい方法があれば教えていただきたいです...
該当のソースコード
elixir
1defmodule Fib do 2 def of(0), do: 0 3 def of(1), do: 1 4 def of(n) do 5 of(n-1) + of(n-2) 6 end 7 def print_loading(n) do 8 cond do 9 div(n,10) == 1 -> 10 IO.puts "now #{n}st fibonacci number loading" 11 div(n,10) == 2 -> 12 IO.puts "now #{n}nd fibonacci number loading" 13 div(n,10) == 3 -> 14 IO.puts "now #{n}rd fibonacci number loading" 15 true -> 16 IO.puts "now #{n}th fibonacci number loading" 17 end 18 end 19end 20#C言語でのscanf 21num = IO.gets("input number?\n") 22 |> String.replace("\n","") 23 |> String.to_integer 24 25worker = Task.async(fn -> Fib.of(num) end) 26Fib.print_loading(num) 27IO.puts "wait for the task" 28 29result = Task.await(worker) 30 31IO.puts "result is #{result}"
補足情報(FW/ツールのバージョンなど)
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Elixir 1.9.1 (compiled with Erlang/OTP 22)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/13 03:35