5

Clojure では、このように :pre を使用しています

user=> (defn cannot-take-empty [x] {:pre [((complement empty?) x)]} 1)
#'user/cannot-take-empty
user=> (cannot-take-empty #{})
AssertionError Assert failed: ((complement empty?) x)  user/cannot-take-empty (NO_SOURCE_FILE:186)

それは素晴らしいことですが、空のコレクションを渡すことが意味をなさないビジネス上の理由を説明していません(または、5 つ以上の要素を持つコレクション、または 2 つのキーが存在するが別のキーが存在しないコレクション、またはその日のルールが何であれ。) 前提条件でプライベート関数が使用されている場合、これはユーザーにとってさらに混乱を招く可能性があります。

:pre と :post を使用しているときに、エラー メッセージのように、より有用なフィードバックをユーザーに提供する方法はありますか?

4

1 に答える 1