第2章 Lua言語の基礎

この章では画面にHello World と表示するプログラムを作成していきたいと思います.同時にここでLua 言語の基礎を学んでいきます.

画面に文字を表示する

次のソースコードをエディタに貼り付けてください.

print ("Hello World!")

プログラムは1 行だけです.C 言語とは違いmain 関数はありません.このプログラムの実行結果は以下のようになります.

実行結果

Hello World!

画面に文字を表示する時はprint 関数を使用します.

書式

print (” なにか表示したい文章をここに書く”)

print 関数は以下のように書くこともできます.

print ("Hello World!")
print ('Hello World!')
print "Hello World!"
print ([[Hello World!]])

上から3 つまでのコードはすべて同じ意味です.

文字列をダブルクォーテーショ ンで囲んでもシングルクォーテーションで囲んでもどちらでもよいです.

ただし4 番目だけは少し意味が違います.これは次節のエスケープシークエンスで説明します.

C言語との違い

  • プログラムはメイン関数から実行されるわけではなく,上から下に実行される
  • printf ではなくprint
  • コードの終端にセミコロン(;) が無い

エスケープシークエンス

たとえば,print 文の中の文字列で,改行をしたい場合があるかもしれません. 改行を行う場合,特殊な文字を使って改行を行います. 改行の場合は\n という文字を使います.\ とn 2 つの文字を組み合わせて改行という意味です.

print("Hello\nWorld!")

このようにして使います.

実行結果

Hello
World!

改行文字のほかに,表2.1 がエスケープシークエンスとしてあります.

表2.1: エスケープシークエンス一覧

記号 意味
\n 改行
\a BEEP 音(警告音)
\t タブ
\b バックスペース
\' シングルクォーテーション
\" ダブルクォーテーション
  バックすらっ種(日本語端末の場合,円マーク)

さて,先ほど出てきたprint ([[Hello World!]]) というprint 関数の書き方ですが,これはエスケープ文字を無視して文字列をそのまま出力します.

例えば次のようなコードがあったとします.

print([[Hello\nWorld!]])

このコードの実行結果は以下のようになります.

実行結果

Hello\nWorld!

文字列をそのまま出力するので,改行などもそのまま表示されます.例えば次のような場合です.

print([[Hello
World!
こんにちは世界
]])

このプログラムの実行結果は以下のようになります.

実行結果

Hello
World!
こんにちは世界

コメント

C 言語同様プログラム内にコメントを書くことができます. コメントとは,ソースコード(自分がC言語で書いた文章の事)の中で,そのソースが何を意味しているかを書いておきたいときに使います.

たとえば次のようなソースがあったとします.

print ("Hello World!") --Hello World!と画面に表示する
「--Hello World!と画面に表示する」という部分がコメントです.マイナスを二つ重ねています.「--」以降の行末までコメントとなります.
ここで,複数行コメントを書きたい場合があると思います.
--この
--部分が
--コメントと
--なります

これでもよいですが,Lua では複数行のコメントを書く場合は,--[[と]] で囲むことでコメントとすることができます.

--[[
この
部分が
コメントと
なります
]]

例題

コメントの入ったプログラム

このプログラムで注意したい点は「This line is not displayed.」という部分が実行結果には表示されていないことです. コメントアウトされている部分はたとえ命令であっても無視されます. また,C 言語のprintf とは違い,print 関数を一度実行すると,文章の終わりに自動的に改行が付け加えられます.

ソース

--print 関数の終わりは勝手に改行される
print("This is a test program ")
print("without indented. ")


--[[
この部分はコメントアウトされているので表示されない
print("This line is not displayed. ")
]]

実行結果

This is a test program
without indented.

長文を表示するプログラム

一行で表示する文字数が多い場合それを同じライン上で書くとコードが読みにくくなる場合があります. この場合の修正方法を学んでいきましょう. print 関数を一回だけ使い, There are 10 types of people in this world. Thosewho understand binary and those who don’t. Which one are you? という文章を表示するとしましょう.

しかし同じライン上で書くとコードが読みにくくなってしまいます.この場合以下のようにコードを書くこともできます.

ソース

--この用にコードを書くこともできる
print("There are 10 types of people in this world." ..
"Those who understand binary and those who don't." ..
"Which one are you?" )

実行結果

There are 10 types of people in this world.Those who understand binary and
those who don’t.Which one are you?

ダブルクォーテーションを表示するプログラム

次のような文字列を表示するプログラムを作りたいとします.

He said, ”How dare you do to me like that!”

この場合次のようなコードを作成してみましたがうまくいきませんでした.

print("He said, "How dare you do to me like that!"")  --error

このコードはエラーが出て実行することができません.ではどのようにすれば”(ダブルクォーテーション)を表示されるのでしょうか? その答えは先ほども登場したエスケープシークエンスを使うことで解決できます.

print("He said, \"How dare you do to me like that!\"")

または次のように書いてもよいでしょう.

print([[He said, "How dare you do to me like that!"]])

このようにできることも覚えておきましょう.

実行結果

He said, ”How dare you do to me like that!”