ここまでのあらまし
前回、
[2, 3, 5] |> Enum.any?(& rem(13, &1)==0)
13を2,3,5で割ってあまりがゼロになる要素がなければfalseを返す、という式を書きました。
今回、これをモジュールに実装していきます。
本題
適当なディレクトリで、
mix new prime
します。
そして、
prime.ex
defmodule Prime do
@moduledoc """
Documentation for Prime.
"""
@doc """
Hello world.
## Examples
iex> Prime.hello()
:world
"""
def hello do
:world
end
def div
isible_all? n, list do
list |> Enum.any?(& rem(n, &1)==0)
end
end
前回の13を n
、 [2, 3, 5]
のリストをlist
としました。
ここでターミナルで
cd prime
iex -S mix
します。
iex(1)> Prime.divisible_all?(13, [2, 3, 5])
false
iex(2)> Prime.divisible_all?(12, [2, 4, 5])
true
ふたつの自由な引数を持ったプログラムができました!!!
なお、divisible_all? という関数名を決める際に、 codic というWebアプリ辞書を使用しました。
これでつまみがふたつついたシンセサイザーができたようなもんです!!
わかるようになったこと
最初はわたしは関数に対しての引数、というものが分かりませんでした。
Enumを学習する過程で第一引数、第二引数、リストがそれに相当する〜、といったことをおぼろげに理解していきました。
しかし今回、ふたつの要素を n
、 list
として可変にすることによって「引数」そのものを理解することができたように思います。
はじめて自分の作ったプログラムが動いた!!感動もひとしおだ!!!
うまずたゆまず、頑張ります。
Kento Mizuno