私は初心者で、J を学ぼうとしています。かなり長い間疑問に思っていたことが 1 つあります。
のステートメント区切り文字はJ
何ですか? J では同じ行に複数のステートメントを記述できますか?
私は初心者で、J を学ぼうとしています。かなり長い間疑問に思っていたことが 1 つあります。
のステートメント区切り文字はJ
何ですか? J では同じ行に複数のステートメントを記述できますか?
ステートメント区切りはありません。というか、文の区切りは改行です。
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
Do".
の代わりに、 Explicit Verb3 :
を使用して匿名の動詞を作成し、それを呼び出すことができます。これにより、一時変数のリークについて心配する必要がなくなります。
複数のステートメントの場合、いくつかの方法があります。
[
(ex. 'bar =. foo + 54 [ foo =. 42'
)'foo =. 42' , LF , 'bar =. foo + 54'
)'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