2017-02-23 9 views
1

としてスタックの先頭を保存するには、まだ初心者のように感じます。私はそれを取得するために、複雑なスタック操作を行うことなく、後で値を思い出すことができるように、スタックの一番上に値を保存したいです。 Yプログラムにおいて、値は、私はそれが直接組み込むことができないように、データ・ファイルから読み込ま緯度であろう。明白な解決策は、(緯度値を保存するために)、userdict中のキー/値のペアとしてのようなものが値を格納するために私には思える:Postscrip/Ghostscriptがどのように私はLinuxでGhostscriptを使用していた辞書項目

2 dict coords 
coords lat [some code to get the value of the latitude on the stack] put 

誰かが中にビットを行うとを含む方法を説明することができますしてください角かっこ?これはよく、私が代わりに何を行うようにしてください。その場合には、私は、それがすべて間違っていることもありか?

背景:私は、ファイルから緯度と経度のデータを使用して、地球儀を作るために切り出し、ボールへ貼り付けることができ襠を描画するプログラムを書いています。 goes.yのデータは、gnuplotのインストールに含まれているworld.datの1320座標のセットです。正しいものに合わせるために経度をスケーリングするのに必要な計算量はかなりあります。あなたは本当に上に行くには十分与えられていない

答えて

2

、「COORDS」と「LAT」とは何ですか?

オペランドスタックに2つのエントリ辞書を作成しました。「coords」は、実行可能なプロシージャです。もしそうなら、辞書をオペランドスタックに戻しますか?

'put'を実行することによって、現在の辞書に配列を定義します。オブジェクトの型は「lat」です。辞書からオブジェクトを取り出すには、再度「lat」にアクセスする必要があります(または、forallを辞書に使用しても、特定の値を取得することは困難です)。

あなたの質問に答えるために、これは現在の辞書のオペランドスタックの最上部に値を定義します:

これはの上に、 現在辞書に1を反抗されていることを
5  %% put an object on top of the dictionary stack, stack is now: 5 
/Saved %% create a name object on the operand stack, stack is now: 5 /Saved 
exch %% exchange the objects, stack is now: /Saved 5 
def  %% define the value on the stack in the current dictionary, using the 
     %% key also on the stack 

注意辞書スタックuserdictで明示的に定義するには、do

5   %% put an object on the operand stack, stack is now: 5 
/Saved  %% put a name object on the operand stack, stack is now: 5 /Saved 
exch  %% exchange the objects, stack is now: /Saved 5 
userdict %% put a pointer to userdict on the operand stack, stack is now /Saved 5 <<userdict>> 
3 1 roll %% roll the stack, stack is now: <<userdict>> /Saved 5 
put  %% put the value from the operand stack, using the key from the operand stack, in the dictionary also on the operand stack 
+0

ありがとうKenS。私の質問に対する単純な完璧な答え。私のガップをuserdictよりも申し訳ありません。私はすべての音を必要以上に複雑にしました。私がより完全にやっていることを説明するために質問を編集します –

関連する問題