Assert

Assert[test]
testTrueであるというアサーションを表す.アサーションが有効になると,アサーションがあるたびに test が評価される.testTrueでなければ,アサーションの失敗が生成される.

Assert[test,tag]
アサーションが失敗した場合にそれを指し示すタグを指定する.

詳細詳細

  • アサーションはしばしばコードに置かれ,プログラマーの想定を表しチェックする.
  • デフォルトで,通常のWolfram言語セッションではアサーションは無効になっているが,Wolframシステムデバッガでは有効になっている.
  • On[Assert]とするとWolfram言語セッションでのアサーションが有効になり,アサーションが失敗するたびにメッセージが表示されるようになる.
  • Assertがファイルに含まれていると,そのファイル名とアサーションがある行番号がアサーションのタグとして自動的に使われる.
  • Wolfram言語デバッガでは,アサーションが失敗するとデフォルトでブレークポイントが作られる.
  • $AssertFunctiontest を評価してもTrueにならない場合にAssert[test,]に適用する関数を与える.

例題例題すべて開くすべて閉じる

  (3)  (3)

計算の進行に伴う一時的な結果に依存するアサーションを含む関数を定義する:

In[1]:=
Click for copyable input

アサーションが無効になっているので,以下ではアサーションのテストは行われない:

In[2]:=
Click for copyable input
Out[2]=

Onでアサーションが有効になるとメッセージが出される:

In[3]:=
Click for copyable input
Out[3]=
In[4]:=
Click for copyable input

アサーション付きの関数を含むパッケージをロードすると,パッケージ名と行番号が記憶される:

In[2]:=
Click for copyable input

次は,行の情報とパッケージ名がAssert式にどのように保存されているかを示している:

これで,一旦アサーションがトリガされるとパッケージ名とアサーションの場所を示す行番号がメッセージで示されるようになる:

In[4]:=
Click for copyable input
Out[4]=

アサーションを無効にする:

In[5]:=
Click for copyable input

アサーションが失敗する場合には$AssertFunctionに割当てを行って動作を変更することができる.この関数はアサーションが失敗すると例外を投げる:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input

以下ではアサーション関数が投げた例外がキャッチされている:

In[3]:=
Click for copyable input
Out[3]=
In[4]:=
Click for copyable input
2010年に導入
(8.0)