2016-05-18 12 views
0

私が使用して配列の最初の要素を取得:サブスクリプトはどのように機能しますか?この最初の絵で

この第二の絵で
subscript(array,[1],First) 

returns_one

私は同じことをしようとしたが、その後第二の要素のためではなく、それは第二からすべてを取得します要素を配列の最後に追加します。私はちょうど残りの部分ではない第二の要素をしたい。正確に動作添字はどのよう

returns_rest

+2

が、それはこのようになりますが、それがために見ている期間構造の種類に沸きます'[1、9、...]'。 '[2]'がリストの末尾をもたらすという事実は、構造がPrologのリスト項のようなものであることを意味します。 ''。(H、T) 'は、' [H | T ] 'Prologで。したがって、 '[2]'(項の第2引数を与える)は 'T'を生成します。ちょっとした考え... – lurker

答えて

3

@lurkerは彼のコメントでsubscript/3をリストに適用しようとしていますが、配列やその他のフラットな構造が必要であると言います。

便宜上、ECLiPSeは、配列のファンクタ'[]'/Nで構造を使用します。あなたは文字通り

Array = [](5,Y,Z,9,2) 

それらを書き込むことによって、またはdim/2

dim(Array, [5]) 

でそれらを作成するか、リストからそのようなアレイで

array_list(Array, [5,Y,Z,9,2]) 

subscript/3作品としてそれらを変換することにより、どちらかそれらを作成することができます期待:

?- Array = [](5,X,Z,9,2), subscript(Array,[4],Elem). 
Elem = 9 
Yes (0.00s cpu) 
subscript/3が暗黙のうちにあなたは算術式内の配列表記を使用するときに呼び出されること

注:私は日食について多くを知らない

?- Array = [](5,X,Z,9,2), Result is Array[4] + 1. 
Result = 10 
Yes (0.00s cpu) 
関連する問題