成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于LUA程序設計對象序列化學習筆記

移動開發 iOS
關于LUA程序設計對象序列化學習筆記是本文要介紹的內容,主要是來學習LUA中對象的序列化,具體內容的詳解來看本文。

關于LUA程序設計對象序列化學習筆記是本文要介紹的內容,主要是來學習LUA對象序列化,具體內容的詳解來看本文。

通常需要序列化一些數據,也就是將數據轉換為一個字節流或字符流,然后就可以將其方便的持久化。文本序列化可選擇的格式非常多:SOAP、Json甚至自定義xml等,不過lua腳本也是一個不錯的選擇方案。

本文在參考《Lua程序設計(第2版)》簡體中文版 詳解LUA腳本語言之數據文件與持久化 基礎上給出下面的實現。要注意的是該實現只能針對無環的table,并且不能對function、thread、userdata這三種類型進行序列化和反序列化。為了防止序列化后數據過大,也沒有做精細的排版控制。

  1. function serialize(obj)  
  2.     local lua = "" 
  3.     local t = type(obj)  
  4.     if t == "number" then  
  5.         lualua = lua .. obj  
  6.     elseif t == "boolean" then  
  7.         lualua = lua .. tostring(obj)  
  8.     elseif t == "string" then  
  9.         lualua = lua .. string.format("%q", obj)  
  10.     elseif t == "table" then  
  11.         lualua = lua .. "{\n"  
  12.         for k, v in pairs(obj) do  
  13.             lualua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"  
  14.         end  
  15.         local metatable = getmetatable(obj)  
  16.         if metatable ~= nil and type(metatable.__index) == "table" then  
  17.             for k, v in pairs(metatable.__index) do  
  18.                 lualua = lua .. "[" .. serialize(k) .. "]=" .. serialize(v) .. ",\n"  
  19.             end  
  20.         end  
  21.         lualua = lua .. "}"  
  22.     elseif t == "nil" then  
  23.         return nil  
  24.     else  
  25.         error("can not serialize a " .. t .. " type.")  
  26.     end  
  27.     return lua  
  28. end  
  29.  
  30. function unserialize(lua)  
  31.     local t = type(lua)  
  32.     if t == "nil" or lua == "" then  
  33.         return nil  
  34.     elseif t == "number" or t == "string" or t == "boolean" then  
  35.         lua = tostring(lua)  
  36.     else  
  37.         error("can not unserialize a " .. t .. " type.")  
  38.     end  
  39.     lua = "return " .. lua  
  40.     local func = loadstring(lua)  
  41.     if func == nil then return nil end  
  42.     return func()  
  43. end  
  44.  
  45. data = {["a"] = "a", ["b"] = "b", [1] = 1, [2] = 2, ["t"] = {1, 2, 3}}  
  46. print(serialize(unserialize(1)))  
  47. print(serialize(unserialize(serialize(data)))) 

小結:關于LUA程序設計對象序列化學習筆記的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 網易博客
相關推薦

2009-11-17 16:32:54

PHP對象序列化

2011-08-25 10:35:14

Lua語言函數

2013-12-12 16:30:20

Lua腳本語言

2010-08-09 09:20:51

Flex程序設計

2011-08-22 17:41:23

LUA 腳本 語言

2011-08-23 17:33:08

LuaMetatable

2011-08-23 16:22:45

Lua 4.0函數

2011-06-01 15:05:02

序列化反序列化

2011-07-05 16:05:43

面向對象編程

2018-03-19 10:20:23

Java序列化反序列化

2011-07-05 15:22:04

程序設計

2011-07-05 15:59:57

面向對象編程

2011-08-23 13:15:37

LUAPackage

2014-04-16 11:39:52

2011-08-25 10:07:24

Lua 5.0函數編譯器

2009-06-14 22:01:27

Java對象序列化反序列化

2022-06-07 14:13:58

Simula編程語言GNU cim

2011-08-23 16:14:27

Lua函數庫函數

2012-04-13 10:45:59

XML

2011-08-23 11:13:56

Lua
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久久久久久人人人人传媒 | 久久国产一区二区 | 日本午夜网 | 青娱乐国产 | 亚洲a在线观看 | 久久久精品影院 | 精品国产乱码久久久久久88av | 在线观看成人精品 | 亚洲激情在线观看 | 91精品国产一区二区在线观看 | 免费观看一级特黄欧美大片 | 亚洲伊人久久综合 | 亚洲在线中文字幕 | 中文字幕欧美一区二区 | 免费观看a级毛片在线播放 黄网站免费入口 | 欧美国产日韩一区二区三区 | 国产美女在线播放 | 久久国产精品视频 | 日韩中文字幕 | 成人超碰| 久色视频在线观看 | 免费国产一区二区 | 一区二区免费视频 | 色综合中文 | 色婷婷婷婷色 | 欧美三级在线 | 成人av激情| 日韩精品免费视频 | 一区二区三区欧美 | 男女深夜网站 | 色视频一区二区 | 小川阿佐美pgd-606在线 | www.中文字幕.com | 日韩欧美在线不卡 | 亚洲男人天堂2024 | 欧美三区 | 91精品福利| 欧美日韩国产在线观看 | 日韩在线一区二区 | 精品国产亚洲一区二区三区大结局 | 91精品国产综合久久久久蜜臀 |