Lua之基础函数

_G

变量前面不要加 local 都可以称之为全局变量

全局变量其实本质上也是一个table,它把我们创建的全局变量都保存到一个table里了。

而这个table的名字是:_G

	s=6
	print(s)
	print(_G["s"]);
	print(_G.s);

type(v)

将参数的类型编码为一个字符串返回。 函数可能的返回值有 "nil" (一个字符串,而不是 nil 值), "number", "string", "boolean", "table", "function", "thread", "userdata"。

tostring(v)

 

可以接收任何类型,它将其转换为人可阅读的字符串形式。 浮点数总被转换为浮点数的表现形式(小数点形式或是指数形式)。 (如果想完全控制数字如何被转换,可以使用

tonumber(e,[,base])

如果调用的时候没有 base, tonumber 尝试把参数转换为一个数字。 如果参数已经是一个数字,或是一个可以转换为数字的字符串, tonumber 就返回这个数字; 否则返回 nil

select(index,...)

如果 index 是个数字, 那么返回参数中第 index 个之后的部分; 负的数字会从后向前索引(-1 指最后一个参数)。 否则,index 必须是字符串 "#", 此时 select 返回参数的个数。

ipairs(t)

返回三个值(迭代函数、表 t 以及 0 ), 如此,以下代码

     for i,v in ipairs(t) do
         --body
     end

将迭代键值对(1,t[1]) ,(2,t[2]), ... ,直到第一个空值。

扫描二维码关注公众号,回复: 4148227 查看本文章

pairs(t)

如果 t 有元方法 __pairs, 以 t 为参数调用它,并返回其返回的前三个值。

否则,返回三个值:next 函数, 表 t,以及 nil。 因此以下代码

     for k,v in pairs(t) do
        --body 
     end

能迭代表 t 中的所有键值对。

print(t)

接收任意数量的参数,并将它们的值打印到 stdout。 它用 tostring 函数将每个参数都转换为字符串

rawequal(v1,v2)

在不触发任何元方法的情况下 检查 v1 是否和 v2 相等。 返回一个布尔量。

rawget(table,index)

在不触发任何元方法的情况下 获取 table[index] 的值。 table 必须是一张表; index 可以是任何值。

	ta={"1",2,"rrr",6}
	print(rawget(ta,3))
    
    --rrr

 rawlen(v)    --5.2以上

在不触发任何元方法的情况下 返回对象 v 的长度。 v 可以是表或字符串。 它返回一个整数。

rawset

在不触发任何元方法的情况下 将 table[index] 设为 value。 table 必须是一张表, index 可以是 nil 与 NaN 之外的任何值。 value 可以是任何 Lua 值。

这个函数返回 table

ta={2,23,"33"}
	rawset(ta,2,"44")
	for k,v in pairs(ta) do
		print(k,v)
	end

--ta={2,"44","33"}

setmetatable(table, metatable)  /  getmetatable(object)

给指定表设置元表/获取原表

1.元方法名

Lua其实已经规定好了各种算术操作符的元方法名字,如:

__add:加法
__sub:减法
__mul:乘法
__div:除法
__unm:相反数
__mod:取模
__pow:乘幂

__eq  :==

__lt  :<

__le  :>=

 local mt = {};
    mt.__add = function(t1, t2)
        print("两个table相加");
    end
    local t1 = {};
    local t2 = {};
   
    -- 设置元表
    setmetatable(t1, mt);
    setmetatable(t2, mt);
   
    -- 进行加法操作
    local result = t1 + t2;
    
    --两个table相加

猜你喜欢

转载自blog.csdn.net/u012909508/article/details/83412539