美文网首页
522. 【Lua】类型和值(二)

522. 【Lua】类型和值(二)

作者: 七镜 | 来源:发表于2022-12-17 05:55 被阅读0次

一、字符串

Lua 语言中的字符串是不可变值(immutable value)。我们不能像在 C 语言中那样直接改变某个字符串中的某个字符,但是我们可以通过创建一个新字符串的方式来达到修改的目的,例如:

> a = "one string"
> b = string.gsub(a, "one", "another")
> a
one string
> b
another string

像 Lua 语言中的其他对象(表、函数等)一样,Lua 语言中的字符串也是自动内存管理的对象之一。这意味着 Lua 语言会负责字符串的分配和释放,开发人员无需关注。

可以使用长度操作符(length operator)(#)获取字符串的长度:

> a = "hello"
> print(#a)
5
> print(#"good bye")
8

该操作符返回字符串占用的字节数,在某些编码中,这个值可能与字符串中字符的个数不同。

我们可以使用连接操作符 ..(两个点)来进行字符串连接。如果操作数中存在数值,那么 Lua 语言会先把数值转换成字符串:

> "Hello " .. "World"
Hello World
> "result is " .. 3
result is 3
  • 在某些语言中,字符串连接使用的是加号,但实际上 3 + 5 和 3 .. 5 是不一样的。

应该注意,在 Lua 语言中,字符串是不可变量。字符串连接总是创建一个新字符串,而不会改变原来作为操作数的字符串。

> a = "Hello"
> a .. " World"
Hello World
> a
Hello

二、强制类型转换

如果需要显式地将一个字符串转换成数值,那么可以使用函数 tonumber。当这个字符串的内容不能表示为有效数字时该函数返回 nil;否则,该函数就按照 Lua 语法扫描器的规则返回对应的整型值或浮点类型值。

> tonumber("   -3   ")
-3
> tonumber(" 10e4 ")
100000.0
>
> tonumber(" 10e  ")
nil
> tonumber("0x1.3p-4")
0.07421875

默认情况下,函数 tonumber 使用的是十进制,但是也可以指明使用二进制到三十六进制之间的任意进制:

> tonumber("100101", 2)
37
> tonumber("fff", 16)
4095
> tonumber("-ZZ", 36)
-1295
> tonumber("987", 8)
nil
  • 在最后一行中,对于指定的进制而言,传入的字符串是一个无效值,因此函数 tonumber 返回 nil。

调用函数 tostring 可以将函数值转换成字串:

> print(tostring(10) == "10")
true

相关文章

  • lua 的值类型

    lua 的值类型 lua 是动态类型的语言,即是说类型附着于值而不是变量。在 lua 脚本里,变量是没有类型的,只...

  • lua - 类型和值

    Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil、boolean、number、str...

  • Lua学习笔记(二):类型和值

    Lua是动态类型语言,变量不需要类型声明,每一个变量都可能包含任一种类型值。一般情况下,同一变量表示不同类型的值会...

  • Lua 快速笔记(一) type

    参考programing in lua 注释 值和类型 运算符 表 赋值 注释 值和类型 nil 未初始化的变量值...

  • Lua 数据类型

    Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua中...

  • lua学习之类型与值篇

    类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 ty...

  • Lua 完全教程

    Lua 环境安装 Lua 基本语法 Lua 数据类型 Lua 数据类型:nil(空) Lua 数据类型:boole...

  • 第二章 类型与值

    1. Lua是一种动态类型的语言。在语言中没有类型定义的语法,每个值都携带了它自身的类型信息。在Lua中有8中基础...

  • lua入门笔记7 字符串库

    基础知识 Lua中的string和c#中相同,string类型的值一旦改变,便要为新值开辟空间,并指向此空间。也就...

  • 数据类型

    Lua 数据类型 lua是动态类型语言(定义变量时不用指定变量类型) lua有8个基本类型nil、boolean、...

网友评论

      本文标题:522. 【Lua】类型和值(二)

      本文链接:https://www.haomeiwen.com/subject/vskzfdtx.html