2017-12-21 3 views
2

Auf dieser Seite der Dokumentation J mit nach stdout, gibt es einen Befehl, um Druckwerte auf der Standardausgabe und die Anzeige: http://www.jsoftware.com/help/dictionary/dx001.htmDruckwerte J Programmiersprache

Im Einzelnen: x 1: 2 y schreiben.

Dies scheint es vorzuschlagen wäre möglich, dies für die Bildschirmausgabe von 2 mit dem Wert von y zu nennen, und 4 für stdout, etwa so:

'123' 1: 2 2

Wenn ich diesen Code jedoch ausführe, erhalte ich nur den Fehler: "Rangfehler". Meine Frage ist also, wie man das 1: 2-Primitiv verwendet, um Datenwerte auf den Bildschirm oder die Standardausgabe auszudrucken.

Ich bemerke von einem anderen Beispiel im Verb Echo, das scheint zu funktionieren, aber warum müsste ich die 4 an die 1: 2 binden, damit es funktioniert?

echo '123' (1: 2 & 4) '123'

Dank!

Antwort

1

J liest von rechts nach links, so dass es das richtige Argument von !: als 2 2 behandelt, weshalb Sie den Rang Fehler erhalten.

'123' 1!:2 2 
|rank error 
| '123'1 !:2 2 

Sie können dieses Problem beheben, indem Sie die 2 zu isolieren, die Sie möchten, dass das richtige Argument der 1!:2 ausländischen Verbindung sein.

'123' 1!:2 (2) NB. Parenthesis to isolate the argument 
123 
123 
    '123' 1!:2 [ 2 NB. verb [ sends the 2 through to 1!:2 
123 
123 
    '123' (1!:2) 2 NB. or you can isolate the conjunction 
123 
123 
+1

Sie können auch '1!: 2 & 2' –