2017-01-24 9 views

答えて

4

入力が保証されているかどうかにかかわらず、第2のガードは冗長です。非整数入力では認識されにくいエラーメッセージが表示されます。代わりに:私はOPは彼が決して確かであれば何の句は無効な入力(OPの最初のコード)でエラーと一致しない方が良いだろうと思う

def check(x) when not is_integer(x) and not is_float(x), do: :type_error 
def check(x) when x < 5, do: :ok 
def check(x), do: :value_error # here x is guaranteed to be numeric ge 5 
+0

def check(x) when x >= 5, do: :error 

1は、より正確なチェックを行う可能性があります無効な入力でそれを呼び出します。また、 'is_number(x)== is_integer(x)またはis_float(x)'です。 – Dogbert

+0

@Dogbertおそらく、私はすべてをカバーする方法を明らかにしました。はい、私は 'is_number'を知っています、私は可能な限り正確であることを望んでいました。 – mudasobwa

関連する問題