Lua標準ライブラリ/基本ライブラリ(2023-05-24 21:49:41)

Lua標準ライブラリ/基本ライブラリの編集履歴一覧へ戻る

2023-05-24 21:49:41更新でのソースとプレビューを表示しています。


プレビューを確認する


ソース

<h2>Lua標準ライブラリ/基本ライブラリ</h2><div><h3>上</h3><div><a href='/ocraviutl/name/Lua%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA'>Lua標準ライブラリ</a></div></div><div class='uk-overflow-container'><table class='uk-table'>	順序				<tr><th>次</th></tr><tr><td>数学ライブラリ</td></tr></table></div><p><br></p><div><div><h2 id='mw-toc-heading'>目次</h2></div><ul><li><a href='#%E5%9F%BA%E6%9C%AC%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA'>1 基本ライブラリ</a><ul><li><a href='#G'>1.1 _G</a></li><li><a href='#VERSION'>1.2 _VERSION</a></li><li><a href='#assert'>1.3 assert</a></li><li><a href='#error'>1.4 error</a></li><li><a href='#getfenv'>1.5 getfenv</a></li><li><a href='#getmetatable'>1.6 getmetatable</a></li><li><a href='#ipairs'>1.7 ipairs</a></li><li><a href='#next'>1.8 next</a></li><li><a href='#pairs'>1.9 pairs</a></li><li><a href='#pcall'>1.10 pcall</a></li><li><a href='#rawequal'>1.11 rawequal</a></li><li><a href='#rawget'>1.12 rawget</a></li><li><a href='#rawset'>1.13 rawset</a></li><li><a href='#select'>1.14 select</a></li><li><a href='#setmetatable'>1.15 setmetatable</a></li><li><a href='#tonumber'>1.16 tonumber</a></li><li><a href='#tostring'>1.17 tostring</a></li><li><a href='#type'>1.18 type</a></li><li><a href='#unpack'>1.19 unpack</a></li><li><a href='#xpcall'>1.20 xpcall</a></li></ul></li></ul></div><h2>基本ライブラリ[]</h2><h3>_G[]</h3><p>グローバル変数を全て含むテーブルです。_G自身も含まれます。</p><div>foo = 1mw.log( foo ) -- logs "1"_G.foo = 2mw.log( foo ) -- logs "2"_G = {}       -- _Gの中に_Gを作成した事になるが・・・_G.foo = 3mw.log( foo ) -- 表示されるのは"2"のまま</div><p>_G自身をテーブルとして使用する例です。</p><div>-- Call a function whose name is stored in a variable_G[var]()</div><div>-- Log the names and stringified values of all global variablesfor k, v in pairs( _G ) do   mw.log( k, v )end</div><div>-- Log the creation of new global variablessetmetatable( _G, {    __newindex = function ( t, k, v )         mw.log( "Creation of new global variable '" .. k .. "'" )         rawset( t, k, v )    end} )</div><h3>_VERSION[]</h3><p>Luaのバージョンを示す文字列です。</p>Aviutl拡張編集 0.90d3時点での内容は"Lua 5.1"です。<h3>assert[]</h3><p>assert(v[, mes])</p><p>v が nil か false だった時、エラーメッセージmesを送出します<br>mes省略時のエラーメッセージは "assertion failed!" になります</p>もしそうでなかった場合、そこに記述された引数をそのまま返します。中に関数を記述した場合、その返す値でassertを実行します。<div>-- This doesn't check for errorslocal result1, result2, etc = func( ... )-- This works the same, but does check for errorslocal result1, result2, etc = assert( func( ... ) )</div><h3>error[]</h3><p>error(mes[, level])</p><p>エラーメッセージmesを送出します</p><p>levelはエラーメッセージに付加する位置情報を指定します<br>1ならerror関数を呼び出した位置<br>2ならerror関数を呼び出した関数を呼び出した位置<br>levelが0か関数呼び出しの深度以上の場合、位置情報は付加されません</p><h3>getfenv[]</h3><p>getfenv(f)</p><p>※Lua 5.2では削除されます。エンジン設定のallowEnvFuncsによって異なります。</p><p>指定された関数の現在の環境を返します。fにはLuaの関数かスタックレベルを指定します。</p><ul><li>1、nil、または省略された場合、getfenvを呼び出す関数の環境を返します。多くの場合、これは<a href='#_G'>_G</a>と同じになります。</li><li>整数2〜10は、呼び出しスタックの上位にある関数の環境を返します。たとえば、2は現在の関数を呼び出した関数の環境を返し、3はその関数を呼び出す関数の環境を返します。値がスタック内の関数呼び出しの数よりも大きい場合、またはターゲットのスタックレベルが末尾呼び出しで返された場合は、エラーが発生します。</li><li>関数を渡すと、その関数が呼び出されたときに使用される環境が返されます。</li></ul><p>すべての標準ライブラリ関数とScribuntoライブラリ関数によって使用される環境は保護されています。getfenvを使ってこれらの環境にアクセスしようとすると、代わりにnilが返されます。</p><h3>getmetatable[]</h3><p>getmetatable(t)</p><p>tのメタテーブルを返します<br>tのメタテーブルが__metatableメソッドを持ってたら、その値を返します<br>nilを返す事もあります</p>Wikiセキュリティの事情でテーブル型以外の値にメタテーブルを設定できないためテーブル型以外では返せません。<h3>ipairs[]</h3><p>ipairs(t)</p><p>イテレータ関数、t、0の3つの値を返します。</p><div>for i, v in ipairs( t ) do    -- blockend</div><p>上のコードは 1 から連続する t の正の整数のインデックスの要素すべてに対して処理を行いますiはインデックス、vはその値です</p><p>eのメタテーブルが__ipairsメソッドを持っていたら、そちらを呼び出します</p><h3>next[]</h3><p>next(t[, i])</p><p>テーブルtの要素iの次の要素の名前と値を返します<br>iがnilもしくは未定義の値ならtの最初の要素の名前と値を返します<br>最後のインデックスで呼び出すか、空のテーブルに対してnilで呼び出すと、nextはnilを返す。 二番目の引数が省略された場合はnilと解釈される。 特に、next( t ) == nilを使うとテーブルが空かどうか調べることができる。</p><p>Luaにはフィールドの宣言がない。テーブル内にフィールドが存在しないのと、nil値が格納されたフィールドには、何の違いも無い。ゆえに、nextはnilでない値を持つフィールドのみを考慮する。インデックスが列挙される順番は、数値のインデックスに対しても、不定である (数値順にテーブルを巡回するには、数値用のfor文や<a href='#ipairs'>ipairs</a>関数を使う)。</p><p>テーブルの巡回中に、もし存在していないフィールドに新たに値が割り当てられたら、nextの動作は未定義である。しかし既存のフィールドは変更してもよい。特に、既存のフィールドを消去するのは構わない。</p><h3>pairs[]</h3><p>pairs(t)</p><p><a href='#next'>next</a>関数、t、nilの3つの値を返します<br></p><div>for k, v in pairs( t ) do    -- blockend</div><p>上のコードはtの要素すべてに対して処理を行います k は要素名、v はその値です</p>巡回中にテーブルを変更する際の注意は<a href='#next'>next</a>を参照。<p>Wiki.pngeのメタテーブルが__pairsメソッドを持っていたら、そちらを呼び出します</p><h3>pcall[]</h3><p>pcall(f,[ ...])関数fに指定された引数を(protected modeで)渡して実行します。<br>関数f内でエラーが発生してもプログラムを中断せずに、falseとエラーコードを返します。<br>成功時はtrueと関数fの戻り値を返します。</p>特定の内部エラーを傍受することはできません。<p>関数の実行中にエラーが発生した場合、通常は呼び出し元までエラーが伝搬し、そこで実行を止めてしまう。しかし、アプリケーション組み込みのスクリプトでは特に、エラーが発生しても止まってほしくないことがある。そこで、単に関数を呼び出す代わりに pcall() という関数を使って関数を呼び出す。</p><p>擬似コードでは、pcallは次のようになります:</p><div>function pcall( f, ... )    try        return true, f( ... )    catch ( message )        return false, message    endend</div><h3>rawequal[]</h3><p>rawequal(a, b)</p><p>__eqメタメソッドを呼ばずにaとbが等しいか調べます。戻り値はブーリアンです</p><h3>rawget[]</h3><p>rawget(t, i)</p><p>__indexメタメソッドを呼ばずに t[i] の値を取得します。t はテーブルでなければなりません</p><h3>rawset[]</h3><p>rawset(t, i, v)</p><p>__newindexメタメソッドを呼ばずに t[i] に v を代入します。t はテーブルでなければなりません</p><h3>select[]</h3><p>select(i, ...)</p><p>iが整数なら[i+1]番目以降の引数の値を全て返しますiが文字列'#'ならiを除く引数の数を返します</p><p>言い換えれば、selectは...にnil値が含まれていても正しく動作することを除けば、ほぼ次のようなものです(nilの問題については <a href='/ocraviutl/name/Lua%E3%81%AE%E6%BC%94%E7%AE%97%E5%AD%90#%E9%95%B7%E3%81%95%E6%BC%94%E7%AE%97%E5%AD%90'>#</a>と<a href='#unpack'>unpack</a>の項目をご覧ください)</p><div>function select( index, ... )    local t = { ... }    if index == '#' then        return #t    else        return unpack( t, index )    endend</div><p>負の値を指定することも可能で、その場合末尾からの位置になります。</p><div><div><ul><li><div><a href='#'>+</a></div></li><li><div><a href='#'>-</a></div></li></ul></div><div><p></p><div>local secondToLast, last = select(2, "one", "two", "three", "four")mw.log(secondToLast) --> "two"mw.log(last)         --> "three"</div><p></p></div><div><p></p><div>local secondToLast, last = select(-2, "one", "two", "three", "four")mw.log(secondToLast) --> "three"mw.log(last)         --> "four"</div><p></p></div></div><h3>setmetatable[]</h3><p>setmetatable(t, meta)</p><p>テーブルtのメタテーブルを設定します<br>もしmetaがnilであれば、テーブルtのメタテーブルは除去される。 元のメタテーブルが__metatableフィールドを持っていると、エラーになる。</p>Aviutl.pngテーブル型以外の値にメタテーブルを設定するには、C言語側で処理する必要があります<h3>tonumber[]</h3><p>tonumber(e[, base])</p><p>eが数値か、数値に変換可能な文字列なら数値を、それ以外ならnilを返します<br>base(省略時:10)にはeを変換する際に使う基数を 2~36 の範囲で指定します</p><p>基数10では値は小数部を持ったり、E表記で表されたり、基数16ではそれを示すために先行 "0x"を持つ可能性があります。他の基数では、符号なし整数のみが受け入れられます。</p><h3>tostring[]</h3><p>tostring(e)</p><p>eを文字列に変換します<br>それぞれの型がどのように変換されるかについての詳細は<a href='/ocraviutl/name/Lua%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B'>Luaのデータ型</a>を見てください。</p><p>eのメタテーブルが__tostringメソッドを持っていたら、そちらを呼び出します</p><h3>type[]</h3><p>type(v)</p><p>vの型を文字列で返します。返される文字列は以下のどれかです</p>"nil""number""string""boolean""table""function""thread"Aviutl.png"userdata"<h3>unpack[]</h3><p>unpack(t[, i[, j]]</p><p>テーブルtの、i以上j以下の整数の要素すべてを返します<br>nilもしくは省略した時、iは 1、jは<a href='/ocraviutl/name/Lua%E3%81%AE%E6%BC%94%E7%AE%97%E5%AD%90#%E9%95%B7%E3%81%95%E6%BC%94%E7%AE%97%E5%AD%90'>#t</a>の値になります</p><p>tがシーケンスではなく、jがnilまたは未指定の場合、結果は確定的ではありません。詳細は<a href='/ocraviutl/name/Lua%E3%81%AE%E6%BC%94%E7%AE%97%E5%AD%90#%E9%95%B7%E3%81%95%E6%BC%94%E7%AE%97%E5%AD%90'>長さ演算子</a>を見てください。</p><p>※Lua 5.2からはテーブルライブラリになり、table.unpackとなります</p><h3>xpcall[]</h3><p>xpcall(f, err)関数 f を実行し、エラーが発生したらエラーメッセージを引数に関数 err を実行します。<br><a href='#pcall'>関数 f 成功時は true と関数 f の戻り値を返します。</a><br>失敗時はfalseと関数errの戻り値を返します。</p>特定の内部エラーを傍受することはできません。<p>擬似コードでは、xpcallは次のようになります:</p><div>function xpcall( f, errhandler )    try        return true, f()    catch ( message )        message = errhandler( message )        return false, message    endend</div>
<br>
この記事は、CC BY-SAのもとで公表された<a href="https://ocraviutl.fandom.com/ja/wiki/Lua%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/%E5%9F%BA%E6%9C%AC%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA">「Lua標準ライブラリ/基本ライブラリ」</a>を改変し作成しました。特に記載されていない限り、CC BY-SAのもとで利用可能です。}

プレビュー

Lua標準ライブラリ/基本ライブラリ

順序
数学ライブラリ


基本ライブラリ[]

_G[]

グローバル変数を全て含むテーブルです。_G自身も含まれます。

foo = 1mw.log( foo ) -- logs "1"_G.foo = 2mw.log( foo ) -- logs "2"_G = {} -- _Gの中に_Gを作成した事になるが・・・_G.foo = 3mw.log( foo ) -- 表示されるのは"2"のまま

_G自身をテーブルとして使用する例です。

-- Call a function whose name is stored in a variable_G[var]()
-- Log the names and stringified values of all global variablesfor k, v in pairs( _G ) do mw.log( k, v )end
-- Log the creation of new global variablessetmetatable( _G, { __newindex = function ( t, k, v ) mw.log( "Creation of new global variable '" .. k .. "'" ) rawset( t, k, v ) end} )

_VERSION[]

Luaのバージョンを示す文字列です。

Aviutl拡張編集 0.90d3時点での内容は"Lua 5.1"です。

assert[]

assert(v[, mes])

v が nil か false だった時、エラーメッセージmesを送出します
mes省略時のエラーメッセージは "assertion failed!" になります

もしそうでなかった場合、そこに記述された引数をそのまま返します。中に関数を記述した場合、その返す値でassertを実行します。
-- This doesn't check for errorslocal result1, result2, etc = func( ... )-- This works the same, but does check for errorslocal result1, result2, etc = assert( func( ... ) )

error[]

error(mes[, level])

エラーメッセージmesを送出します

levelはエラーメッセージに付加する位置情報を指定します
1ならerror関数を呼び出した位置
2ならerror関数を呼び出した関数を呼び出した位置
levelが0か関数呼び出しの深度以上の場合、位置情報は付加されません

getfenv[]

getfenv(f)

※Lua 5.2では削除されます。エンジン設定のallowEnvFuncsによって異なります。

指定された関数の現在の環境を返します。fにはLuaの関数かスタックレベルを指定します。

  • 1、nil、または省略された場合、getfenvを呼び出す関数の環境を返します。多くの場合、これは_Gと同じになります。
  • 整数2〜10は、呼び出しスタックの上位にある関数の環境を返します。たとえば、2は現在の関数を呼び出した関数の環境を返し、3はその関数を呼び出す関数の環境を返します。値がスタック内の関数呼び出しの数よりも大きい場合、またはターゲットのスタックレベルが末尾呼び出しで返された場合は、エラーが発生します。
  • 関数を渡すと、その関数が呼び出されたときに使用される環境が返されます。

すべての標準ライブラリ関数とScribuntoライブラリ関数によって使用される環境は保護されています。getfenvを使ってこれらの環境にアクセスしようとすると、代わりにnilが返されます。

getmetatable[]

getmetatable(t)

tのメタテーブルを返します
tのメタテーブルが__metatableメソッドを持ってたら、その値を返します
nilを返す事もあります

Wikiセキュリティの事情でテーブル型以外の値にメタテーブルを設定できないためテーブル型以外では返せません。

ipairs[]

ipairs(t)

イテレータ関数、t、0の3つの値を返します。

for i, v in ipairs( t ) do -- blockend

上のコードは 1 から連続する t の正の整数のインデックスの要素すべてに対して処理を行いますiはインデックス、vはその値です

eのメタテーブルが__ipairsメソッドを持っていたら、そちらを呼び出します

next[]

next(t[, i])

テーブルtの要素iの次の要素の名前と値を返します
iがnilもしくは未定義の値ならtの最初の要素の名前と値を返します
最後のインデックスで呼び出すか、空のテーブルに対してnilで呼び出すと、nextはnilを返す。 二番目の引数が省略された場合はnilと解釈される。 特に、next( t ) == nilを使うとテーブルが空かどうか調べることができる。

Luaにはフィールドの宣言がない。テーブル内にフィールドが存在しないのと、nil値が格納されたフィールドには、何の違いも無い。ゆえに、nextはnilでない値を持つフィールドのみを考慮する。インデックスが列挙される順番は、数値のインデックスに対しても、不定である (数値順にテーブルを巡回するには、数値用のfor文やipairs関数を使う)。

テーブルの巡回中に、もし存在していないフィールドに新たに値が割り当てられたら、nextの動作は未定義である。しかし既存のフィールドは変更してもよい。特に、既存のフィールドを消去するのは構わない。

pairs[]

pairs(t)

next関数、t、nilの3つの値を返します

for k, v in pairs( t ) do -- blockend

上のコードはtの要素すべてに対して処理を行います k は要素名、v はその値です

巡回中にテーブルを変更する際の注意はnextを参照。

Wiki.pngeのメタテーブルが__pairsメソッドを持っていたら、そちらを呼び出します

pcall[]

pcall(f,[ ...])関数fに指定された引数を(protected modeで)渡して実行します。
関数f内でエラーが発生してもプログラムを中断せずに、falseとエラーコードを返します。
成功時はtrueと関数fの戻り値を返します。

特定の内部エラーを傍受することはできません。

関数の実行中にエラーが発生した場合、通常は呼び出し元までエラーが伝搬し、そこで実行を止めてしまう。しかし、アプリケーション組み込みのスクリプトでは特に、エラーが発生しても止まってほしくないことがある。そこで、単に関数を呼び出す代わりに pcall() という関数を使って関数を呼び出す。

擬似コードでは、pcallは次のようになります:

function pcall( f, ... ) try return true, f( ... ) catch ( message ) return false, message endend

rawequal[]

rawequal(a, b)

__eqメタメソッドを呼ばずにaとbが等しいか調べます。戻り値はブーリアンです

rawget[]

rawget(t, i)

__indexメタメソッドを呼ばずに t[i] の値を取得します。t はテーブルでなければなりません

rawset[]

rawset(t, i, v)

__newindexメタメソッドを呼ばずに t[i] に v を代入します。t はテーブルでなければなりません

select[]

select(i, ...)

iが整数なら[i+1]番目以降の引数の値を全て返しますiが文字列'#'ならiを除く引数の数を返します

言い換えれば、selectは...にnil値が含まれていても正しく動作することを除けば、ほぼ次のようなものです(nilの問題については #unpackの項目をご覧ください)

function select( index, ... ) local t = { ... } if index == '#' then return #t else return unpack( t, index ) endend

負の値を指定することも可能で、その場合末尾からの位置になります。

local secondToLast, last = select(2, "one", "two", "three", "four")mw.log(secondToLast) --> "two"mw.log(last) --> "three"

local secondToLast, last = select(-2, "one", "two", "three", "four")mw.log(secondToLast) --> "three"mw.log(last) --> "four"

setmetatable[]

setmetatable(t, meta)

テーブルtのメタテーブルを設定します
もしmetaがnilであれば、テーブルtのメタテーブルは除去される。 元のメタテーブルが__metatableフィールドを持っていると、エラーになる。

Aviutl.pngテーブル型以外の値にメタテーブルを設定するには、C言語側で処理する必要があります

tonumber[]

tonumber(e[, base])

eが数値か、数値に変換可能な文字列なら数値を、それ以外ならnilを返します
base(省略時:10)にはeを変換する際に使う基数を 2~36 の範囲で指定します

基数10では値は小数部を持ったり、E表記で表されたり、基数16ではそれを示すために先行 "0x"を持つ可能性があります。他の基数では、符号なし整数のみが受け入れられます。

tostring[]

tostring(e)

eを文字列に変換します
それぞれの型がどのように変換されるかについての詳細はLuaのデータ型を見てください。

eのメタテーブルが__tostringメソッドを持っていたら、そちらを呼び出します

type[]

type(v)

vの型を文字列で返します。返される文字列は以下のどれかです

"nil""number""string""boolean""table""function""thread"Aviutl.png"userdata"

unpack[]

unpack(t[, i[, j]]

テーブルtの、i以上j以下の整数の要素すべてを返します
nilもしくは省略した時、iは 1、jは#tの値になります

tがシーケンスではなく、jがnilまたは未指定の場合、結果は確定的ではありません。詳細は長さ演算子を見てください。

※Lua 5.2からはテーブルライブラリになり、table.unpackとなります

xpcall[]

xpcall(f, err)関数 f を実行し、エラーが発生したらエラーメッセージを引数に関数 err を実行します。
関数 f 成功時は true と関数 f の戻り値を返します。
失敗時はfalseと関数errの戻り値を返します。

特定の内部エラーを傍受することはできません。

擬似コードでは、xpcallは次のようになります:

function xpcall( f, errhandler ) try return true, f() catch ( message ) message = errhandler( message ) return false, message endend

この記事は、CC BY-SAのもとで公表された「Lua標準ライブラリ/基本ライブラリ」を改変し作成しました。特に記載されていない限り、CC BY-SAのもとで利用可能です。

ソースを確認する


Lua標準ライブラリ/基本ライブラリの編集履歴一覧へ戻る