Lua 快速筆記(一) type

參考
programing in lua

<h2 id="comment">注釋</h2>

-- 單行注釋

--[[
    多行注釋
--]]

<h2 id="value_type">值和類型</h2>

nil

  1. 未初始化的變量值為 nil
  2. nil 只與自己相等

boolean

true / false

number

  1. 不區分整型和浮點型
  2. 0 被判定為真
  3. tostring(number) 方法用于將數字轉化為字符串

string

  1. 單雙引號都可以用于聲明字符串 'hello' "haloo"
  2. 兩對中括號可以用于聲明多行字符串 [[多行字符串]]
  3. .. 是字符串鏈接符,不同與其他語言 + 作為單純的算數運算符。
  4. 轉義字符串未完成

local mutiString = [[
    111
    223123
]]

print('10' + 1) -- number: 11
print(10 .. 22) -- string: '1022'

function

lua中函數是第一類值,可以存儲到變量中,也何以作為函數的返回值

UserData

later

Thread

later

<h2 id="operator">運算符</h2>

算數運算符

  1. 二元運算符: +,-,*,/,^,% 加,減,乘,除,冪,模
  2. 一元運算符: -

關系運算符

< > <= >= == ~=

  1. 關系運算符返回 boolean 類型(true/false)
  2. == 比較地址, ~= 比較值

邏輯運算符

and, or, not

用法對應其他語言的 &&, ||, !,and 優先級高于 or

-- 1. 三元運算
a and b or c

-- 2. 判斷真

func1 and func1() -- func1 不為假執行

x = x or y
-- 等于
if not x then
    x = y 
end

運算符優先級

level -
1 ^
2 not - (unary 一元)
3 * /
4 + -
5 ..
6 < > <= >= ~= ==
7 and
8 or

除了^..外所有的二元運算符都是左連接的。

<h2 id="table">表 table</h2>

1. 創建

-- 類數組
days = { 
  "Sunday", "Monday", "Tuesday", "Wednesday",
  "Thursday", "Friday", "Saturday"
}

-- 類對象
pet = { name = "Misha", age = 12 }

-- 混合

foo = {
  date = "2017-07-19",
  worklist = { "lua", "csharp" },
  pet = pet
}

ps:

  1. 數組風格是對象風格的特例
{"red", "green", "blue"}
-- 相當于
{[1] = "red", [2] = "green", [3] = "blue"} 

  1. 數組風格下標從1開始,可以規定從0開始,但很多標準庫不能使用
{[0] = "red", "green", "blue"}
  1. 在構造函數的最后的","是可選的,可以方便以后的擴展。
  {"red", "green", "blue",}
  1. 在構造函數中域分隔符逗號(",")也可以用分號(";")替代。

2. 讀取

foo.data        -- string: '2017-07-19'
foo.worklist[1] -- string: 'lua' 注意:下標從1開始
foo.pet.age     -- number: 12

3. 修改

foo.data        -- string: '2017-07-19'
foo.data = 20170719
foo.data        -- number: 20170719

4. 刪除

賦值為 nil

<h2 id="assignment">賦值</h2>

  1. 多變量賦值
a, b = 10, 2 * x
-- a: 10, b: 2 * x

a, b, c = 0
-- a: 0, b: nil, c: nil

a, b, c = 3, 4, 5, 6
-- a: 3, b: 4, c: 5;    6被忽略

function f () 
  return 10, 20
end

a, b = f()
  1. 交換賦值
x, y = y, x
a[i], a[j] = a[j], a[i]
  1. 值的個數與變量個數不一致遵循:
  • 變量個數 > 值的個數:按變量個數補足 nil
  • 變量個數 < 值的個數: 多余的值會被忽略

require

模塊中聲明為 local,并 return 的變量。在其他模塊中引用時使用 local foo = require 'foo'

模塊中聲明的全局變量,只要被其他任意一個模塊引用時,即載入到 _G中,別的模塊即可任意調用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容