`

lua函数

 
阅读更多
传引用
local function test(a)
  a.a1 = 3
end

local a = {a1=1,a2=2}
test(a)
print(a.a1)

3


非全局函数
Lib = {}
function Lib.foo (x,y)
  return x + y
end
function Lib.goo (x,y)
  return x - y
end

print(Lib.foo(1,2))

3


递归
local fact
fact = function (n)
  if n == 0 then
    return 1
  else
    return n*fact(n-1)
  end
end
print(fact(4))

24


由于全局变量一般会污染全局名字空间,同时也有性能损耗(即查询全局环境表的开销),因此我们应当尽量使用“局部函数”,其记法是类似的, 只是开头加上 local 修饰符
print("test fun1")
local function fun1()
  return 1,2
end

a,b = fun1()
print(a,b)

function fun2(t)
  for i in ipairs(t) do
  print(t[i])
  end
end

f = string.find
a = {"hello", "ll"}

print("test fun2")
print(fun2(a))

print("test function unpack")
print(f(unpack(a)))

function fun3(a,b,...)
  for i,v in ipairs(arg) do
    print(v)
  end
end

print("test function variable parameter")
print(fun3(1,2,3,4,5,6,7))



test fun1
1	2
test fun2
hello
ll

test function unpack
3	4
test function variable parameter
3
4
5
6
7



--string.format
str = string.format("A:%d%s",1,"a")
print(str)

a = {p=print}
a.p("abc")
print("def")

--table sort
function printTable(t)
  for e in pairs(t) do
    print(t[e].name..":"..t[e].age)
  end
end

people = {{name="zhangsan",age="26"},
  {name="lisi",age="25"},
  {name="wangwu",age="21"}}

function f(p1,p2)
  return p1.age<p2.age
end

print("before sort:")
printTable(people)
table.sort(people,f)
print("after sort:")
printTable(people)

function f1()
  local i = 0
  return function()--anonymous function
    i = i+1
    return i
  end
end

ff1 = f1()
print(ff1())
print(ff1())

--Lua 编译时遇到 fact(n-1)并不知道他是局部函数 fact
local fact --loop need
fact = function (n)
  if n == 0 then
    return 1
  else
    return n*fact(n-1)
  end
end

print(fact(4))


A:1a
abc
def
before sort:
zhangsan:26
lisi:25
wangwu:21
after sort:
wangwu:21
lisi:25
zhangsan:26
1
2
24
分享到:
评论

相关推荐

    Lua的使用入门之在C++程序中调用lua函数1

    本教程将详细介绍如何在C++程序中调用Lua函数,实现文本的获取与显示策略。 首先,你需要安装Lua库,并将其头文件和库文件添加到你的C++项目中。对于Visual Studio 2008(vc2008)用户,可以通过NuGet或手动下载Lua...

    C\C++中调用Lua函数的接口封装

    在C或C++中调用Lua函数通常涉及到与Lua虚拟机的交互,这需要理解Lua的C API,包括进栈(pushing values onto the stack)和出栈(popping values from the stack)等操作。这些操作是繁琐且容易出错的,因此在实际...

    LuaAction C++访问LUA函数

    同样,当Lua函数返回这些类型的数据时,LuaAction也能将其转换为C++可识别的格式。 特别地,对于TABLE类型,LuaAction还支持多层表的嵌套。这意味着你可以传递或接收包含其他表的表,这样的数据结构在处理复杂数据...

    c++ 调用lua函数简单案例

    本文将详细讲解如何在C++中调用Lua函数,并提供一个简单的源代码案例作为参考。 首先,我们需要了解C++与Lua交互的基础。Lua是一个轻量级的脚本语言,它的设计目标是易于嵌入到其他应用中,而C++则是一种通用的、...

    C++ 中调用 Lua 函数

    总结起来,在 C++ 中调用 Lua 函数涉及到 Lua 环境的创建、脚本加载、函数查找、参数传递、函数调用及返回值处理等多个步骤。熟练掌握这些步骤,可以灵活地在 C++ 应用中集成 Lua 脚本,实现动态扩展和自定义功能。

    Lua的最基本使用 C++与lua的互相调用

    在本文中,我们将深入探讨如何在C++程序中集成Lua,实现C++调用Lua函数以及Lua调用C++函数。 一、C++调用Lua函数 1. 配置环境:首先,你需要在C++项目中包含Lua库。确保已经下载并正确安装了Lua,并将其头文件和库...

    lua函数脚本分析

    ### Lua函数脚本分析:Lua运行效率分析 #### 前言 在游戏开发与软件工程领域中,Lua 作为一种轻量级且高效的脚本语言,因其灵活性与易集成性而受到广泛欢迎。特别是在游戏引擎如 Cocos 中,Lua 的应用尤为普遍。...

    易语言lua的例子

    通过这些文件,你可以学习到如何在易语言环境中使用Lua,包括导入库、调用Lua函数、执行Lua脚本以及如何处理返回的结果。这对于想在易语言项目中利用Lua的强大功能,比如实现动态配置、游戏逻辑或者复杂的算法,是...

    常用lua函数

    ### 常用Lua函数详解 #### 一、字符串填充函数 在Lua中,字符串处理是非常常见的需求之一。本文档提供了三个字符串填充函数:`StrFillC`、`StrFillL`、`StrFillR`,用于实现字符串的中心填充、左填充和右填充。 ##...

    lua注入学习的好东西

    “lua注入”是指在游戏运行时,通过某种方式将自定义的Lua代码插入到游戏中,使得可以调用游戏已经注册的Lua函数或者执行特定的字符串。这种技术在游戏调试、插件开发、自动化测试等方面非常有用。例如,开发者或...

    C语言中调用Lua函数实例

    本文将介绍如何在C语言中调用Lua函数。 首先,需要了解的是,在Lua中定义的函数可以被C语言所调用,C语言程序需要使用Lua提供的API来实现这一功能。以下是C语言调用Lua函数的步骤: 1. 压入Lua函数到栈顶:在Lua中...

    Lua编程事例:调用Lua有参函数

    总的来说,通过本文的介绍,你应该能够理解如何在C++中使用Lua API调用有参数的Lua函数,并对Lua与C++的交互有了基本的认识。这使得C++程序能灵活地利用Lua脚本实现动态行为,同时也保留了C++的高性能特性。

    Sublime自定义Lua代码段Snippet包(Lua函数注释)

    Lua自定义代码段,包括函数注释,++,--,+=,-=,*=,if elseif else等等; 函数注释:给已有函数添加注释(add_commit_clipboard)快捷键:Ctrl+Alt+x 生成带注释的函数,能自动按照参数生成注释行(dfun.sublime-...

    lua参考手册和lua常用函数

    《lua函数.txt》文件可能包含了Lua标准库的常用函数,例如: - **math库**:提供了各种数学函数,如math.random()用于生成随机数,math.pow()用于求幂,math.sqrt()用于开平方根等。 - **string库**:处理字符串的...

    Lua编程示例(六): C语言调用Lua函数

    ### Lua编程示例(六):C语言调用Lua函数 #### 概述 在《Lua编程示例(六):C语言调用Lua函数》这篇文章中,作者通过一个具体的代码示例,展示了如何从C/C++环境中调用Lua脚本,并与Lua脚本进行交互。这种交互...

    C调用lua函数需要考虑的问题

    首先,C语言调用Lua函数的基本流程是:将Lua函数和参数压入栈中,然后通过C API(如lua_pcall)来执行Lua脚本中的函数。具体操作步骤包括: 1. 使用lua_pcall调用Lua函数。这一步是核心,在调用前需要确保Lua函数和...

    C语言模块回调Lua函数的两种方法

    在C语言中编写模块以与Lua脚本进行交互时,有时需要从C代码中回调Lua函数。本文将详细介绍两种在C模块中回调Lua函数的方法:C保存函数对象和C访问Lua全局环境。 1. C保存函数对象 这种方法的核心是利用Lua的注册表...

    lua调用C/C++函数

    要从C/C++中调用Lua函数,我们需要创建一个Lua状态机(lua_State*),这是所有交互的基础。例如: ```c #include &lt;lua.h&gt; #include #include int main() { lua_State *L = luaL_newstate(); luaL_openlibs(L);...

    c++调用lua的函数

    C++调用Lua函数是将C++代码与Lua脚本集成的一种常见方法,这使得开发者可以利用Lua的灵活性和简洁性编写部分逻辑,同时利用C++的高性能和系统级功能。Lua是一种轻量级的脚本语言,常用于游戏开发、配置文件、扩展...

Global site tag (gtag.js) - Google Analytics