変数名
これまでの記事では、a
や b
のような文字を変数に使ってきましたが、もちろん 2 文字以上の変数名も使えます。変数名には以下のような決まりがあります。
- 半角英数字 (
A-Z
a-z
0-9
) とアンダースコア (_
) が使える - 先頭の文字はアルファベット (
A-Z
a-z
) のみ - アンダースコアで終わったり、連続するアンダースコアを含んだりしてはならない
J には予約語がないので、if
や for
なども変数名に使えます。一方、アンダースコアを使う位置には注意が必要です。
命名規則
定数の名前は大文字のスネークケース、それ以外は小文字のスネークケースないしはキャメルケース、とするのが一般的です。
代入
代入には =:
を使います。=:
は copula (繋辞) 1 に分類されます。copula は noun や verb などとは異なり、それ自体は値ではありません。
copula は、=:
と =.
の 2 種類です。代入の構文は、=:
も =.
も同じです 2。
左辺
代入式の左辺は、いくつかの書き方ができます。配列の要素を同時に複数の変数に代入することもできます。
- 変数名 (直接)
- 文字列リテラル ― スペース区切りで複数の変数に代入できる
- 括弧で括った式 ― 式の結果が以下のいずれか
- 1 つ以上の変数名からなる文字列 (スペース区切り)
- 変数名を格納したボックス (のリストも可)
one=: 1
'two'=: 2
NB. 複数の変数に配列を代入
three ; four ; five [ 'three four five'=: 3 4 5
┌─┬─┬─┐
│3│4│5│
└─┴─┴─┘
NB. 変数名 ab を作る
ab [ ('a' , 'b')=: 'AB'
AB
NB. 変数名 a と変数名 b をボックスに入れてリストに
a ; b [ ('a' ; 'b')=: 'AB'
┌─┬─┐
│A│B│
└─┴─┘
括弧を使うと、変数を間接的に参照して代入できます。
name=: 'var'
(name)=: i.3 NB. var=: i.3 になる
name ; var
┌───┬─────┐
│var│0 1 2│
└───┴─────┘
配列を複数の変数に代入する場合、長さが一致する必要があります。
'a0 a1 a2'=: 2 3
|length error
| 'a0 a1 a2' =:2 3
右辺
変数には、noun に限らず verb, adverb, conjunction も代入することができます。変数に型はないので、極端な話、noun を代入していた変数に verb を代入するようなことも可能です 3。
]cat=: '😺'
😺
cat=: ,
'c' cat 'at'
cat
noun 以外を代入する場合、[
や ]
を一緒に使うと別の意味になるので、気をつけてください。
]f=: /
]/
[ 前 : adverb と conjunction ] [ 目次 ] [ 次 : フックとフォーク ]