Lua is a dynamically typed language, variables do not need type definition, only need to assign values to variables. The value can be stored in a variable, passed as a parameter or returned as a result.
There are eight basic types in Lua: nil , boolean , number , string , userdata , function , thread and table .
Data type | Description |
|---|---|
nil | This is the simplest, and only the value nil belongs to this class, representing an invalid value (equivalent to false in a conditional expression). |
boolean | Contains two values: false and true. |
Number | A real floating point number representing a double precision type |
string | A string is represented by a pair of double or single quotation marks |
function | Functions written by C or Lua |
userdata | Represents a C data structure arbitrarily stored in a variable |
thread | Represents an independent line for execution, used to execute collaborative programs |
table | A table in Lua is actually an “associative array” (associative arrays), and the index of the array can be a number, a string, or a table type. In Lua, table is created through a “construction expression”. The simplest construction expression is {}, which is used to create an empty table. |
We can use For global variables and The execution result of the above code is as follows: The result of the above code execution: The string is represented by a pair of double or single quotation marks. You can also use 2 square brackets The following code execution results are: When performing an arithmetic operation on a numeric string The “error” + 1 execution in the above code reported an error, and string concatenation uses the Use In The The execution result of the script is: Arrays that are different from other languages use 0 as the initial index of the array, in the The execution result of the script is: The execution result of the script is: In The execution result of the script is: The execution result of the script is: In The difference between a thread and a co-program: a thread can run more thanone at the same time, while a co-program can only run one at any time, and only a running co-program is suspended
最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。 type function tests the type of a given variable or value: 4.4.1. Example #
print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> string
nil #
nil type represents a type that does not have any valid value, it has only one value – nil , for example, if you print a variable with no assignment, you will output a nil value:> print(type(a)) nil >
table , nil also has a “delete” function. Assigning a nil value to a global variable or variable in a table isequivalent to deleting them. Execute the following code to determine:tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1) do print(k .. " - " .. v) end tab1.key1 = nil for k, v in pairs(tab1) do print(k .. " - " .. v) end
nil should be compared in double quotation marks
": # > type(X) nil > type(X)==nil false > type(X)=="nil" true >
type(X)==nil result is false , type(X) essentially, it is a string returned "nil" , which is a string type:type(type(X))==string
Boolean (Bull) #
boolean has only two optional values for the type true (true) and false (fake) , Lua regard false and nil as false , the rest are for true , number 0 and true : 4.4.2. Example #
print(type(true)) print(type(false)) print(type(nil)) if false or nil then print("At least one is true") else print("Both false and nil are false") end if 0 then print("The number 0 is true") else print("The number 0 is false") end
$ lua test.lua boolean boolean nil Both false and nil are false The number 0 is true
number (digital) #
Lua has only one kind by default. number type– double (doubleprecision) type (default type can be modified luaconf.h , the following ways of writing are regarded as number type: 4.4.3. Example #
print(type(2)) print(type(2.2)) print(type(0.2)) print(type(2e+1)) print(type(0.2e-1)) print(type(7.8263692594256e-06))
number number number number number number
string #
string1 = "this is string1" string2 = 'this is string2'
"[[]]" to represent a “piece” string.Example #
html = [[ <html> <head>head> <body> <a href="http://www.runoob.com/">Novice Tutoriala> body> html> ]] print(html)
<html> <head>head> <body> <a href="http://www.runoob.com/">Novice Tutoriala> body> html>
Lua attempts to convert this number string to a number: > print("2" + 6) 8.0 > print("2" + "6") 8.0 > print("2 + 6") 2 + 6 > print("-2e2" * "6") -1200.0 > print("error" + 1) stdin:1: attempt to perform arithmetic on a string value stack traceback: stdin:1: in main chunk [C]: in ? > .. , such as: > print("a" .. 'b') ab > print(157 .. 428) 157428 >
# to calculate the length of the string, put it in front of the string, as an example: 4.4.4. Example #
> len = "www.runoob.com" > print(#len) 14 > print(#"www.runoob.com") 14 >
table #
Lua , table is created through a “construction expression”, and the simplest construction expression is {} to create an empty table, you can also add some data to the table to initialize the table directly: 4.4.5. Example #
-- Create an empty table local tbl1 = {} -- Direct Initial Table local tbl2 = {"apple", "pear", "orange", "grape"}
table in Lua is actually an “associative arrays” whose index can be either a number or a string. 4.4.6. Example #
-- table_test.lua script file a = {} a["key"] = "value" key = 10 a[key] = 22 a[key] = a[key] + 11 for k, v in pairs(a) do print(k .. " : " .. v) end
$ lua table_test.lua key : value 10 : 33
Lua , the default initial index of the inner table usually starts with 1. 4.4.7. Example #
-- table_test2.lua script file local tbl = {"apple", "pear", "orange", "grape"} for key, val in pairs(tbl) do print("Key", key) end
$ lua table_test2.lua Key 1 Key 2 Key 3 Key 4
table will not be fixed in length, when new data is added table , the length will increase automatically, without an initial table are all nil . 4.4.8. Example #
-- table_test3.lua script file a3 = {} for i = 1, 10 do a3[i] = i end a3["key"] = "val" print(a3["key"]) print(a3["none"])
$ lua table_test3.lua val nil
function #
Lua , a function is regarded as a “First-Class Value” and can be stored in a variable: 4.4.9. Example #
-- function_test.lua script file function factorial1(n) if n == 0 then return 1 else return n * factorial1(n - 1) end end print(factorial1(5)) factorial2 = factorial1 print(factorial2(5))
$ lua function_test.lua 120 120
function can pass it through parameters as an anonymous function (anonymous function): 4.4.10. Example #
-- function_test2.lua script file function testFun(tab,fun) for k ,v in pairs(tab) do print(fun(k,v)); end end tab={key1="val1",key2="val2"}; testFun(tab, function(key,val)--Anonymous function return key.."="..val; end );
$ lua function_test2.lua key1 = val1 key2 = val2
thread #
Lua , the main thread is the collaborative program ( coroutine ). It is associated with threads ( thread pretty much, with its own independent stack, local variables, and instruction pointers, you can share global variables and most other things with other co-programs. suspend will not be suspended until). Userdata (Custom Type) #
userdata is a user-defined data used to represent a type created by an application or the Cpicket + language library, and data of any data type of any Cpicket + can be transferred (usually struct and pointers) are stored to Lua is called in the variable.