• チャックルアにおけるマルチスレッド入門

    chuck-luaはアクターモードのスレッドモデルをサポートしています。cthread.newでスレッドを作成し、cthread.sendmailでスレッドにメッセージを送信することができます。 chuck-luaはskynetのようなフレームワークとは異なり、マルチスレッドのタスク/メッセージスケジューリングを提供しません。各スレッドは、他のスレッドから送られたメッセージをキャッシュする

    2022-02-09 04:41:53
  • WindowsでのLuaのインストールと環境設定

    環境:luafor windows (lfW) ホームページ http://luaforwindows.luaforge.net/ lua for windowsは、実際にはLuaの完全な開発環境であり、以下のものが含まれます。 Lua インタープリタ Luaリファレンスマニュアル(Lua Reference Manual) Luaクイックツアー(Luaクイックスタ

    2022-02-09 03:56:33
  • Luaで式を解析するためのディープダイブ

     パターンを使用する この例では、スキーマを作成し使用するための、非常にシンプルだが完全な手順である コピーコード コードは以下の通りです。 local lpeg = require "lpeg" -- matches a word followed by end-of-string p = lpeg.R"az"^1 * -1 print(p:

    2022-02-09 01:34:07
  • Luaでモジュールを使うためのいくつかの基本的なこと

    --水平線2本で1行のコメント、--[[プラス2本の[and]で複数行のコメントを示す--]]。 コピーコード コードは以下の通りです。 -- assuming that the file mod.lua reads local M = {} local function sayMyName()   print('Hrunkner') end fun

    2022-02-09 01:11:52
  • Luaにおけるイテレータとジェネリックforの使い方を徹底解説

    ジェネリックフォーの原則 イテレータとは、コレクション内のすべての要素に対して反復処理を行う仕組みのことです。Luaでは、イテレータは通常、関数として表現され、関数が呼ばれるたびにコレクション内の「次の」要素を返します。各イテレータは、呼び出しが成功するまでの間、自分がどこにいて、どのように次の位置に移動するかを知るために何らかの状態を維持する必要があり、クロージャはこれを可能にする。次の例は、

    2022-01-09 22:18:16
  • Lua連携プログラムcoroutineの紹介とメリット・デメリット

    コルーチンとは何ですか? Luaのコルーチンはスレッドに似ており、スタック、ローカル変数、命令ポインタが独立しており、グローバル変数やその他のほとんどのものを他のコルーチンと共有します。 コラボレーションは非常に強力ですが、使い方が非常に複雑です。 スレッドと協働プログラムの違い 並行プログラムはコンパイラレベル、スレッドはOSレベルで、マルチプロセッサの場合、マルチスレッドプログラムは複

    2022-01-09 21:55:27
  • Luaを使ったRedisコマンドのカスタマイズを解説

    プリアンブル 非常に成功したデータベースとして、Redisは豊富なデータ型とコマンドを提供し、多くのキャッシュ操作を簡単かつ効率的に行うことができます。しかし、解決しなければならない特別な問題やニーズが常に存在し、そのために独自のRedisデータ構造とコマンドをカスタマイズしなければならない場合があります。 Redisコマンドの問題点 スレッドの安全性に関する問題 Redisがシングルスレ

    2022-01-09 20:03:09
  • LuaでC++の関数を呼び出す例

    LuaはもちろんC言語で定義された関数を呼び出すこともできます。平均化の例を説明します。 以下に示すC++の関数average()は、複数の引数を受け取り、複数の値を返す方法を示しています。 1. lua_gettop関数は、スタックの先頭のインデックス値を返します。Lua ではスタックの番号は 1 から始まるので、この関数で得られる値は引数の数だけあることになります。 2. fo

    2022-01-09 19:08:14
  • Luaプログラミングの例(7)。協調プログラムのための基本ロジック

    co=coroutine.create(function() print("hi") end) print(coroutine.status(co)) coroutine.resume(co) print(coroutine.status(co)) print() co=coroutine.create(function() for i=1,2 do print("co",i) cor

    2022-01-09 15:02:11
  • Luaでstring.len()を使用するためのガイド

    プリアンブル 今日は日曜日ですが、私はまだ直接比較的単純な関数の文字列ファミリをリストするために、みんなの脳細胞を無駄にしない、関数は単純ですが、使用は素晴らしいです、使用頻度も非常に高いです、さらに詳しく説明せずに、我々は直接関数の使用状況を見てください。 コンテンツ 文字列.len() プロトタイプ:string.len(s) 説明 与えられた文字列の長さを返します。文字列に'˶'が

    2022-01-09 14:06:39
  • REDISのNULL判定を読み込むサンプルコード

    プリアンブル なぜredisデータベースの操作にluaスクリプトを使用するのですか? 1. オーバーヘッドの削減 - Redisサーバーへのリクエスト回数を減らす 2. アトミック操作 - redisはluaスクリプトをアトムとして実行します。 3. 3.再利用性 - 既に実行されたluaスクリプトを他のクライアントが使用可能 4. Redisの柔軟性を

    2022-01-09 11:12:15
  • Lua Observerパターンの解析 イベント配信システム構築のためのベストプラクティス

    I. 前書き あるゲームでモジュールAがユーザのコイン数を変更し、モジュールBとモジュールCの両方がユーザのコイン数に依存する機能を提供している場合、モジュールAがコイン数を変更したときにモジュールBとモジュールCに通知する必要がある問題を考えてみよう。従来は、モジュールAがモジュールBとモジュールCのオブジェクトを保持し、それぞれオブジェクトインターフェースを呼び出して、"おい、ユーザーの金貨

    2022-01-09 05:43:47
  • Luaのプログラミング例(4)。テーブルライブラリ、文字列ライブラリ、システムライブラリからなるLua標準ライブラリ

    tb1 = { "alpha","log","gamme"} print(table.concat(tb1," , ")) print(table.concat(tb1,"\n",nil,2)) print() tb1[88.99] = 'aaa' --returns the value with the largest index value and calculates the deci

    2022-01-09 04:54:08
  • luaのマジックテーブルを徹底解説

    プリアンブル 最近、すごいWMを構成しようと思って、luaをざっと見てみました。勉強しているうちに、luaのテーブルの使い方にすっかりやられてしまいました。 テーブルを辞書や配列として使用したり、クロージャやモジュールを設定したり、オブジェクトやクラスのモデリングに使用したりと、Luaでは本当にどこにでもあるものです。 辞書 テーブルの最も基本的な役割は、辞書として使用されることである。そ

    2022-01-09 04:39:14
  • Luaの基本的なイテレータの使用例

    公式のドキュメントには、次のように書かれています。 イテレータは、標準テンプレートライブラリのコンテナ内の一部またはすべての要素に対して反復処理を行うために使用できるオブジェクトであり、各イテレータオブジェクトはコンテナ内の定義されたアドレスを表します。 Luaにおけるイテレータとは、コレクションの各要素に対して反復処理を行うポインタ型をサポートする構造体のことです。 主なイテレータの種類は

    2022-01-09 04:36:37
  • Vimを使ったLua開発環境の構築方法詳細

    前置き SpaceVim はモジュール式の Vim IDE で、lua 言語をサポートするために lang#lua モジュールとそれに関連する他のモジュールに依存しています。この記事では、SpaceVimを使ってluaの開発環境を構築する方法について、lua開発関連のテクニックを中心に解説します。この記事を読む前に、Vimを使った基本的な開発環境の構築を見て、言語以外の機能についても大まかに把握

    2022-01-09 02:24:10
  • Lua プログラミング例(5)。C言語によるLuaテーブルの読み込みと追加

    #include "stdafx.h" lua_State *L; void load_lua(char *filename){ L=luaL_newstate(); luaL_openlibs(L); if((luaL_loadfile(L,filename) || lua_pcall(L,0,0,0))! = 0){ luaL_error(L,"loadfile error!

    2022-01-06 23:55:56
  • Luaプログラミング例(I):選択、デバッグ、変数パラメータ、テーブル操作、エラー

    function test_print(...) for i=1,select("#",...) do print(i,select(i,...)) end end test_print(11,12,13,14) print() print(debug.traceback()) print() function test(...) for i=1,arg.n do print(

    2022-01-06 23:37:44
  • Luaでstring.lower()を使用するための手引き

    プリアンブル 今日、我々は関数を要約しても比較的簡単ですが、関数の役割は、小文字に大文字の文字列で与えられる、この操作はしばしば検証コードなどの比較操作の前に発生する、通常は大文字と小文字を区別しないですし、我々は一緒に関数の使用を見てください。 コンテンツ 文字列.lower() プロトタイプ:string.lower(s) 説明 文字列を受け取り、文字列内の大文字を小文字に変換したコ

    2022-01-06 23:19:21
  • Luaプログラミングの例(6)。C言語からLuaの関数を呼び出す

    C++側です。 #include "stdafx.h" lua_State *L; void load_lua(lua_State **L,char *filename){ *L=luaL_newstate(); luaL_openlibs(*L); if(luaL_loadfile(*L,filename) || lua_pcall(*L,0,0,0)){ luaL_error

    2022-01-06 20:36:16