Lua解説 - 第2回

関数について

あ〜・・・これ説明してなかったね・・・すっかり忘れてた・・・(をい
うんっと、まぁ、これも数学と大体は一緒・・・かなぁ
まぁ簡単に一次関数を使って例を挙げることにする
一次関数は知っての通り、
y = ax
と定義される
とりあえずわかりやすくするために此処ではaを3にしておくことにしよう
y = 3x
んでこのxにてきとーに1つ数字を放り込めばyも自動的に1つの数字で返ってくるわけだな
プログラミングではこの時の、xを引数、yを戻り値って呼ぶ
以下に同じものを簡単にLuaで定義してみる
function Linear3(x) y=3*x; return y; end
さて説明
まず最初のfunctionはこれ以降の記述が1つの関数ですよ、という宣言だ
これで最後のendまでが1つの関数・・・まぁ、↑の例で言うなら「y=3x」という1つの式ですよ、と認識されるわけだ
次、Linear3は関数の名前
これは別に自分で好きなようにつけちゃっておk
今回は「傾きが3の一次関数(linear function)」だからわかりやすくLinear3ってしただけ
次の(x)は引数リストという
数式「y=3x」のうちの、最初に自分で値を決める「x」の部分だな
今回はxの1個だけだけど、引数が複数ある場合は(引数1,引数2,〜)って感じにコンマで区切って並べてあげればいい
その次からが関数の本体
今回の場合は、まず「3*x」を計算した結果を「y」って変数を作って代入する
後ろのセミコロンはそこまでで一旦文が途切れますよって印
まぁ文字列の時の\nみたいなもんだw
このセミコロン、言語によっては基本的に改行の手前には必ずくっつけるのが慣例になってたりする
でもLuaじゃあんま関係ないかもw
うちもつけてないし(ぁ
そんでもってreturn yは「y」に代入された結果を答えとして返しますよって宣言
ここで返される値・・・今回の場合は「y」に代入された中身が戻り値になる
これも複数の戻り値を返すことも出来て、その場合は「return 戻り値1,戻り値2,〜」と引数リストと同じくコンマで区切って並べてやればいい
んでendで関数終了っと
実際にこの関数のxに何か数字を入れて答えが知りたいときは、例えばx=2の時の答えが欲しかったら
Answer = Linear3(2)
って書けばAnswerにy=3*2が計算されて返ってくるわけだ

型について

っつーわけで改めて第2回(マテ
こっからはそろそろプログラミング言語特有の概念だと思う
「型」ってのはその値の「属性」だ
もっと大雑把に言えば「分類」だ
ん〜・・・例えば・・・
数学だと「1」とか「20」とか「128」とかは「整数」だし、
「0.1」とか「3.14」とかは「小数」だし、
「1/2」とか「5/4」とかは「分数」になる
まぁ要はこの「整数」とか「小数」とか「分数」とかってカテゴリーのことをプログラミングにおいては「型」って言うわけだ

変数についてPart2

さて、ここでこの「型」に関連して、変数について数学と違う重要な点を1つ
プログラミングにおいて変数とは値を入れるための「箱」である、ということ
そんでもって、その「箱」はサイズとか形の違ういくつかの種類がある
サイズも種類によってそれぞれだし、形も○だったり△だったり・・・
当然、1種類の箱にはそれよりも小さいものか、大きさが同じであれば同じ形の物しか入れられない
この「箱の形状」が「型」ってこと
例としてC++を挙げると、代表的な「整数型」として「int」や「long」、
「小数型」として「double」、「float」、
「文字型」として「char」、「string」とかってところか
これがまたC系の言語だと結構厳密にチェックされるのよねぇ・・・
「char」に小数とかなんて入れちゃうとエラー吐かれたりとか・・・w
「int」に小数入れると警告出されて、小数点以下切捨てだったかしら?
まぁいいや、此処では関係ないw

Luaにおける型

他のC系の言語は↑の通りかなり細かくチェックされるんだけど、Luaの箱はどうにもなかなか優秀な奴で、中に入ってきた物に合わせて勝手に箱の形を変えてくれる
まぁただ、中に入ってくる物にはちゃんと「型」が定義されているので、1つの型を入れて使っていた変数に別の型の値を代入して〜なんてことをやると混乱の元になるからやらないほうがいいけど
Luaで定義されている型は、nil、ブーリアン、数値、文字列、関数、ユーザーデータ、スレッド、テーブル、の8つ
まぁ一つずつ説明していこう

nil

これは・・・まぁつまるところ空箱であるw
中に誰もいませんよ・・・状態(ぁ
変数を新しく作ったとき、そこに何にも入れなければ一番最初はこの状態

ブーリアン

これにはtrueかfalseか、どちらかが入る
ん〜大雑把に言うと、質問されてYesかNoかを答えてくれる型ってところかねぇw
当然ながらtrueがYes、falseがNo
ちなみに、LuaではYesNoを判断したい時、nilとこのfalseだけがNoの返答になる
それ以外は全てYesと答えていることになる
わかりにくいかな・・・
まわかんなきゃとりあえずほっといても平気だそのうち理解できるw

数値

読んで字の如し(ぁ
整数だろうが小数だろうがLuaにおいては関係ないw
・・・そのまんますぎてこれ以上解説のしようがないな・・・(死
次w(マテ

文字列

読んでj(ry
いや、うん、1回目で説明したとおり、クォートかダブルクォートか長括弧で囲ってあったらもう文字列だw
とりあえず深く考えるなってことだ(滅

関数

y(ry
今回の最初で説明した通りw
ただ、1つ補足したいのは、さっきの例に使った関数定義
function Linear3(x) y=3*x; return y; end

Linear3 = function (x) y=3*x; return y; end
と同じ意味、ということ
ん〜・・・っと、つまりは・・・ちょっとややこしくなるけど、Luaにおける関数とは、「関数名」(今回なら「Linear3」)って変数に一連の処理を代入してる、ってことなんだよね
まー詳しいことはそのうち理解できるでしょう(ぁ
今んところは↑2つは同じ意味だ〜とだけ思っといてくれればおkw
後で思い出したときに読み返せばきっと理解できることでしょう・・・多分(死

ユーザーデータ

これは、LuaがC言語を補助するための言語として開発されたことに関係している型
親となるC系のプログラムで定義されたデータを読み書きするための型・・・とだけ覚えとけばいいかな
そもそもホムAI作る上では一切扱わないし全く関係ないし・・・w

スレッド

これもホムAIには概関係ないかな〜
というかこいつが何なのかうちもあんまり理解してない(マテコラ
・・・・・・
・・・さ、次いこうkうわまてわかったやめろっていやごめんなさいやめてくださいやmくぁwせdrftgyふじこlp;@:「」

テーブル

これはよく使うねぇ
詳しくはまた後々説明することになるけど、とりあえず今んところは「好きな数の箱を紐を通してひとくくりにした物」と理解しておけばいいかしら
箱ってのはもちろん変数のことねw
まぁ詳しくはきちんと書いた時にってことで
・・・終わった〜・・・眠い
次回辺りからはページ分割します
ってことでおやすみ〜ノシ