标签:并且 字符 不同 ring 空字符串 语言 形式 回车 ascii表
1 --语法和Python比较类似,直接像Python一样使用print即可 2 --这里我可以直接写中文,显然被当成了注释。在lua中,两个-表示注释 3 --[[ 4 这种形式可以表示多行注释 5 ]] 6 7 --在lua中,语句后面也可以像Python一样加分号,但也可以不加。 8 print("hello world")
1 --lua和Python一样,并不需要像C一样声明一个变量,因为本身带有值的类型 2 --直接给变量赋值即可 3 4 --[[ 5 lua的基本类型有:nil(空) 6 boolean(布尔) 7 number(数字) 8 string(字符串) 9 table(表) 10 函数等内容后面再说 11 12 ]] 13 14 --[[ 15 注意:赋值的时候,可以将多个语句写在一行,用空格或者;分隔。 16 这里只是演示,但是实际开发中不建议这么做 17 ]] 18 a = 123;b="satori";c=3.14;d=math.pi 19 --使用type查看值的类型 20 print(type(a), type(b), type(c), type(d)) -- number string number number 21 --可以看到,lua中没有什么int float等等,只要是数字,类型通通为number 22 print(type(print)) -- function 23 24 --如果一个变量我们没有赋值直接使用的话,在Python中会报错,提示name xxx is not defined 25 --但在lua中不会报错,对于一个没有赋值的变量在lua中默认为nil 26 --nil用于区别其他变量,给一个全局变量赋值为nil等于删除这个全局变量 27 print(mmp, type(mmp)) -- nil nil 28 29 --在lua中,只有false和nil表示假,其他的都表示真。0和空字符串在lua中表示真,这和Python不太一样 30 31 --lua中,字符串一旦创建了,便不可以修改了。这和Python一样,但是在Python中可以使用replace修改并返回一个新的字符串 32 --那么lua也有类似的方法,该方法同样会得到一个返回值,不会修改原来的值 33 s1 = "hello cruel world" 34 s2 = string.gsub(s1, "cruel", "beautiful") 35 print(s1) -- hello cruel world 36 print(s2) -- hello beautiful world 37 38 --并且在lua中,可以使用单引号也可以使用双引号 39 --类似于Python,如果输入的字符串本身有单引号,那么外部就用双引号,反之亦然 40 print("I‘m satori") --I‘m satori 41 --如果我非要使用相同的引号,那么可以使用转义字符,将内部的引号进行转义 42 print(‘I\‘m satori‘) --I‘m satori 43 44 --[[ 45 一些转义字符 46 \a:响铃 47 \b:退格 48 \f:提供表格 49 \n:换行 50 \r:回车 51 \t:制表 ]] 52 print("i am \r satori, come from \n东方地灵殿") 53 --[[ 54 satori, come from 55 东方地灵殿 ]] 56 57 --字符串也可以使用\加上三位数字表示,就是相应的ascii表 58 print("\065") --A 59 60 -- 如果想表达多行字符串,可以使用[[ ]],类似于Python中的三引号‘‘‘ ‘‘‘ 61 s3 = [[ 62 南村萝莉欺我老无力 63 经常与我发生性 64 关系 65 ]] 66 print(s3) 67 --[[ 68 南村萝莉欺我老无力 69 经常与我发生性 70 关系 71 ]] 72 73 --如果一个字符串和一个数字进行运算的话,那么会尝试将字符串转化成数字 74 --显然字符串必须是由数字组成,如果包含不是数字的字符,就会报错,无法转化 75 print("666"+1) --667 76 77 --字符串的连接,在lua中..表示字符串连接 78 --不可以使用"a"+"b"这样的形式,这在Python中是允许的,但在lua中不可以。但可以使用.. 79 s4 = " satori" 80 print("a".."b"..s4) --ab satori 81 print("1".."+".."1".." == ".."2") -- 1+1 == 2 82 83 -- 如果我想获取一个字符串的长度该怎么办呢?在Python中使用len函数,但在lua中使用#。 84 -- 而#在Python中表示注释,因此两门语言某些地方类似,某些地方又完全不同,确实很有意思 85 print(#"我随随便便一写就是标准的十五字") -- 45 86 -- 输出结果为45,咦,不是15吗?肯定一眼就找出答案了,一个汉字占三个字节 87 -- 而且lua默认用的是utf-8编码。值得一提的是,在Python中使用len函数计算出来的结果为15 88 -- 因为在Python中,len计算的是字符数,而不是字节数。 89 -- 而且在go语言中,计算的结果也为45,同样是字节。如果想得到字符数,在go中需要用[]rune转化一下。 90 s6 = "mmp" 91 print(#s6) -- 3 92 93 -- lua中还有一种叫做table的类型,说白了就是Python中的字典(哈希表),key和value一一对应 94 hash_map = {} 95 hash_map["satori"] = "东方地灵殿" 96 print(hash_map["satori"]) -- 东方地灵殿 97 -- 将hash_map赋值给别的变量,并且将hash_map删除 98 hash_map_1 = hash_map 99 hash_map = nil 100 print(hash_map) -- nil 101 print(hash_map_1["satori"]) -- 东方地灵殿 102 -- 可以看到即使删除了hash_map,但不会对hash_map1造成影响 103 -- lua的垃圾回收类似于Python当中的引用计数,当hash_map1也赋值为nil,没变量再引用的时候就会删除垃圾资源 104 --如果访问一个不存在的key,那么得到的会是nil 105 x = {} 106 x[1] = 2 107 x[2] = 3 108 print(x[1], x[2], x[3]) -- 2 3 nil 109 --想删除table中某个元素,直接赋值为nil即可 110 x[1] = nil 111 print(x[1]) -- nil 112 -- 而且table这种结构,还可以使用.来访问 113 x.name = "satori" 114 print(x.name) -- satori
标签:并且 字符 不同 ring 空字符串 语言 形式 回车 ascii表
原文地址:https://www.cnblogs.com/traditional/p/9803168.html