vJine.Lua — это библиотека-обёртка для языка Lua на C#. Она позволяет запускать Lua-скрипты напрямую из C# и взаимодействовать с ними.
MPL2.0 (https://www.mozilla.org/MPL/2.0/)
// Импорт пространства имён
using vJine.Lua;
// Получение версии Lua
string V = LuaContext.Version;
// Создание экземпляра LuaContext
LuaContext luaContext = new LuaContext();
string vars_name = "vJine.Lua.Vars.bool";
// Установка и чтение переменных стека
bool v_bool = true;
luaContext.set(true);
luaContext.get(out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(false);
luaContext.get(out v_bool);
Debug.Assert(v_bool == false);
// Установка и чтение глобальных переменных
luaContext.set(vars_name, true);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == true);
luaContext.set(vars_name, false);
luaContext.get(vars_name, out v_bool);
Debug.Assert(v_bool == false);
// Регистрация: анонимный метод
luaContext.reg("vJine.Lua.funcs.anony", new Action<MyStatus>((MyStatus E) => {
string msg = string.Format("result[anonymous]:{0}", E);
}));
// Регистрация: статический метод
luaContext.reg("vJine.Lua.funcs.M", new Action<MyStatus>(MyClass.M));
// Регистрация: метод экземпляра
MyClass xq = new MyClass();
luaContext.reg("vJine.Lua.funcs.m", new Action<MyStatus>(x1.m));
// Регистрация класса: по умолчанию
luaContext.reg<MyClass>();
// Регистрация класса: пользовательское имя
luaContext.reg<MyClass>("vJine.Lua.YourClass");
// Внедрение скрипта:
object[] R = luaContext.inject(
"function callback(my_arg) return my_arg .. ' on_the_fly' end return true, 1.234, callback('vJine.Lua')");
// Вызов скрипта
object[] Obj = luaContext.exec("callback", "vJine.Lua");
// Загрузка скрипта:
R = luaContext.load("d:/vJine.Lua/start.lua");
// Печать переменных стека:
luaContext.print_vars();
// Печать глобальной переменной:
luaContext.print_var("vJine.Lua.UT.MyClass");
// Определение класса:
public class MyClass {
public MyClass My { get; set; }
public bool B { get; set; }
public bool? b { get; set; }
public byte[] B_ { get; set; }
public double D { get; set; }
public double d { get; set; }
public Guid G { get; set; }
public Guid? g { get; set; }
public Guid[] G_ { get; set; }
public string S { get; set; }
public string s { get; set; }
public string[] s_ { get; set; }
public DateTime DT { get; set; }
public DateTime? dt { get; set; }
public DateTime[] DT_ { get; set; }
public MyStatus E { get; set; }
public MyStatus? e { get; set; }
public MyStatus[] E_ { get; set; }
public static void M(MyStatus E) {
string msg = string.Format("result[anonymous]:{0}", E);
}
public void m(MyStatus E) {
string msg = string.Format("result[anonymous]:{0}", E);
}
public static string SM(int a, string b) {
return string.Format("SM:Result:a,{0};b,{1}", a, b);
}
public string IM(int a, string b) {
return string.Format("IM:Result:a,{0};b,{1}", a, b);
}
public string show_properties() {
return string.Format("Properties:b,{0};d,{1};s,{2}", this.B, this.D, this.s);
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )