4

だから、私は疑問に思っています/尋ねています。APL で If ステートメントを実行することは可能ですか? もしそうなら、どのように?

これが私のコードです

    'Please enter a number to count to: ' 
 number ←⎕ 
 ⍳number

ユーザーが100を超える数値を入力すると、「高すぎる」と出力されて終了するifステートメントを取得するにはどうすればよいですか。または、100以下の場合は続行しますか?

ありがとう!

4

4 に答える 4

8

Dyalog APL には、guard と呼ばれるこのきちんとした小さなものがあります。

これらは dfns で使用でき、特定の条件が一致したときにコードを評価できます。

func ← {⍵>100 : 'too high' ⋄ 1 : 'number is ok'}
于 2016-10-29T15:27:57.283 に答える
3

APL2 でエラー処理*を行う「古典的な」方法は、⎕ES または ⎕EA を使用することです。コードは次のようになります。

⎕ES(NUMBER>100)/'Too high'
⍳NUMBER

ここで何が起こるかというと、IF括弧が true と評価された場合、THEN⎕ES実行を停止し、引用符で囲まれた文字列をエコーし​​ます。

THEN を終了させたくない場合は、⎕EAAPL のドキュメントを参照してください。

私は GreenOnBlack 環境で APL2 を使用しているため、Dyalog のようなより現代的な方言でこれを行うより適切な方法がある可能性が高いことに注意してください。


*エラー処理ではなく条件について質問していることは知っていますが、実行を終了する例であるため、エラー処理である可能性があります。

これと MBaas の提案には決定的な違いがあります。彼のソリューションは、値を返す可能性のある現在の関数を正常に終了します。⎕ESまたはを使用して、すべての実行⎕EA終了します。

于 2016-06-16T13:40:19.187 に答える