0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

代入 ― J 言語入門

Last updated at Posted at 2021-06-26

変数名

これまでの記事では、ab のような文字を変数に使ってきましたが、もちろん 2 文字以上の変数名も使えます。変数名には以下のような決まりがあります。

  • 半角英数字 (A-Z a-z 0-9) とアンダースコア (_) が使える
  • 先頭の文字はアルファベット (A-Z a-z) のみ
  • アンダースコアで終わったり、連続するアンダースコアを含んだりしてはならない

J には予約語がないので、iffor なども変数名に使えます。一方、アンダースコアを使う位置には注意が必要です。

命名規則

定数の名前は大文字のスネークケース、それ以外は小文字のスネークケースないしはキャメルケース、とするのが一般的です。

代入

代入には =: を使います。=:copula (繋辞) 1 に分類されます。copula は noun や verb などとは異なり、それ自体は値ではありません

copula は、=:=. の 2 種類です。代入の構文は、=:=. も同じです 2

左辺

代入式の左辺は、いくつかの書き方ができます。配列の要素を同時に複数の変数に代入することもできます。

  • 変数名 (直接)
  • 文字列リテラル ― スペース区切りで複数の変数に代入できる
  • 括弧で括った式 ― 式の結果が以下のいずれか
    • 1 つ以上の変数名からなる文字列 (スペース区切り)
    • 変数名を格納したボックス (のリストも可)
   one=: 1
   'two'=: 2
   NB. 複数の変数に配列を代入
   three ; four ; five [ 'three four five'=: 3 4 5
┌─┬─┬─┐
345
└─┴─┴─┘
   NB. 変数名 ab を作る
   ab [ ('a' , 'b')=: 'AB'
AB
   NB. 変数名 a と変数名 b をボックスに入れてリストに
   a ; b [ ('a' ; 'b')=: 'AB'
┌─┬─┐
AB
└─┴─┘

括弧を使うと、変数を間接的に参照して代入できます。

   name=: 'var'
   (name)=: i.3   NB. var=: i.3 になる
   name ; var
┌───┬─────┐
var0 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 ] [ 目次 ] [ 次 : フックとフォーク ]

  1. 英語の be動詞などに相当する品詞。

  2. =. については、後々必要になるので、その際に説明します。

  3. 余程の理由がない限り、してはいけませんが。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?