Closed2
Neovimに入門する。
Lua
このサイトに沿って学習していく。
第5, 6回のC言語と連携する内容は割愛する。
-- コメント
-- 1行コメント
--[[
複数行
コメント
]]
-- 型の種類
-- nil
-- 真偽値 -> boolean
-- 数値 -> number
-- 文字列 -> string
-- 関数 -> function
-- テーブル -> table
-- スレッド -> thread
-- ユーザデータ -> userdata
b = true
i = 1
print(type(b)) -- boolean
print(type(i)) -- number
-- 標準出力
-- print()は改行が自動で挿入される
print('Hello, World!')
-- io.write()は改行が挿入されない
io.write('Hello, World!')
-- 標準入力
-- 標準入力から読み取り
v = io.read()
io.write(v*3)
-- 条件分岐
v = io.read()
if v % 2 == 0 then
print('偶数です。')
elseif v % 2 ~= 0 then
print('奇数です。')
else
print('その他')
end
-- ループ
for i = 1, 4 do
print(i) -- 1 2 3
if i == 4 then
break
end
end
-- いわゆるwhile文
i = 1
do i < 3 do
i = i + 1
end
-- いわゆるdo-while文
repeat
until (評価式)
-- tableの中身を繰り返し
t = { 'a', 'i', 'u', 'e', 'o' }
for k, v in pairs(t) do
print(k, v)
-- 1 a
-- 2 i
-- 3 u
end
-- 関数
function add(num1, num2)
return num1 + num2
end
-- 可変引数
function fn(fmt, ...)
print(fmt:format(...))
end
fn('[%s=%s]', 'neko', 30)
-- ローカル変数
function f(n)
local v = n -- ローカル変数として宣言したため関数外から変数vにアクセスできない
return v
end
-- 複数戻り値
function f(n)
return n, n + 2, n + 3
end
v1, v2, v3 = f(3)
-- レキシカルスコープ
function outer()
local outer_val = 1
local function inner()
outer_val = outer_val + 1
print(outer_val .. ' local function inner is called')
end
end
-- テーブル
-- テーブルは他のプログラミング言語でいう配列や連想配列としての役割を担う
-- 配列として利用する場合
tbl = { 'a', 'b', 'c' }
tbl[1] = 'hello'
print(tbl[1]) -- hello
print(tbl[2] -- b
-- 連想配列として利用する場合
tbl = { john=16, kosuke=18, bianca=20 } -- keyには''を付けない
print(tbl['john']) -- 16
print(tbl['bianca']) -- 20
print(tbl['hoge']) -- nil
-- テーブルのキーと値を列挙
tbl = { john=16, kosuke=18, bianca=20 }
for k, v in pairs(tbl) do
print(k, v)
-- bianca 20
-- john 16
-- kosuke 18
end
-- メタテーブル
-- 実際の値とは関係のない付加的な属性やパラメータを覚えておくことができる
-- テーブルへの読み書きは、setmetatable()とgetmetatable()で行う
v = { name = 'john', age = 16, sex = 'male' }
setmetatable(v, { note = 'This is a note.' })
meta = getmetatable(v)
for k, v in pairs(meta) do
print(k, v)
end
-- モジュール
-- 規模が大きいプログラムを実装する場合、または単にファイル分割をしたい場合は
-- モジュールを利用することができる
-- add.lua
function add(a, b)
print('add(a, b) = ', ... a + b)
end
-- main.lua
require('add')
add(2, 3)
-- 文字列操作
str = 'abcdefg'
name = string.sub(str, 7, 12) -- 7文字目から12文字目を抜き出す
print(name)
-- string.sub()は文字列の部分文字列を取り出す関数
-- h = 'Hello'
-- h:sub(1, 3)という風にも書くことができる
-- string.len()は文字列の長さを取得する関数
-- h = 'Hello'
-- h:len()という風にも書くことができる
このスクラップは2023/11/13にクローズされました