3

私は初心者で、J を学ぼうとしています。かなり長い間疑問に思っていたことが 1 つあります。

のステートメント区切り文字はJ何ですか? J では同じ行に複数のステートメントを記述できますか?

4

4 に答える 4

3

ステートメント区切りはありません。というか、文の区切りは改行です。

于 2013-07-18T20:59:46.643 に答える
3

MPelletierが指摘しているように、ステートメント演算子はありませんが、「代入のトリック」を使用できます。最初に (右から左に) 使用するときに、ステートメントの結果を変数に代入します。例えば:

これの代わりに:

a =: 15
f =: (+/) % # i.a
g =: (-/) % # i.a
h =: ((-:g) * (+:f)) ^ ((-:f) * (+:g))

あなたはこれを書くことができます:

h =: ((-:g) * (+:f)) ^ ((-: f =. (+/) % #i.a) * (+: g =. (-/) % # i.a=.15))

または、代わりに:

mean =: (+/) % #
f =: mean i.15

これ:

f =: (mean =: (+/) % #) i.15
于 2013-07-18T21:57:29.017 に答える
1

Do".の代わりに、 Explicit Verb3 :を使用して匿名の動詞を作成し、それを呼び出すことができます。これにより、一時変数のリークについて心配する必要がなくなります。

複数のステートメントの場合、いくつかの方法があります。

  1. ステートメントを逆にして結合する[(ex. 'bar =. foo + 54 [ foo =. 42')
  2. 改行で連結 (ex. 'foo =. 42' , LF , 'bar =. foo + 54')
  3. テーブルとしての形状コード (例'foo =. 42' ,: 'bar =. foo + 54')。

Eelvexの例を借りる:

   (3 : 'h =. ((-:g) * (+:f)) ^ ((-:f) * (+:g)) [ g =. (-/) % # i.a [ f =. (+/) % # i.a [ a =. 15') ''
0.976216
   (3 : ('a =. 15' ,LF, 'f =. (+/) % # i.a' ,LF, 'g =. (-/) % # i.a' ,LF, 'h =. ((-:g) * (+:f)) ^ ((-:f) * (+:g))')) ''
0.976216
   (3 : ('a =. 15' , 'f =. (+/) % # i.a' , 'g =. (-/) % # i.a' ,: 'h =. ((-:g) * (+:f)) ^ ((-:f) * (+:g))')) ''
0.976216

どういうわけか3 : <...>、通常の右から左への実行の前に評価されるため、 の右側に括弧が必要です:。この動作を使用して、次の括弧を省略できます3 : <...>

   3 : '6 * 9' ''
54
于 2014-06-08T15:37:35.970 に答える