Difference between revisions of "Tserial (日本語)"

(Created page with "== Tserial について == Tserial は文字列をテーブルへ変換 ("シリアル化") および逆変換するためのライブラリです。これはゲームのセ...")
 
m (Tserial.pack)
 
(4 intermediate revisions by the same user not shown)
Line 13: Line 13:
  
 
== よくある質問と回答 ==
 
== よくある質問と回答 ==
; Q) Tserial は別のテーブルを内包するテーブルを圧縮することができますか?
+
; Q) Tserial は別のテーブルにある入れ子テーブルを圧縮できますか?
 
: A) はい、できます。どのような深度数の入れ子テーブルであっても申し分ありません(タイル・マップのようなものでも適しています)。しかしながら、 Tserial は自己参照テーブルを扱うことができません (<code>t={t}</code> または <code>t={{1,2,3},{t}}</code> など)。
 
: A) はい、できます。どのような深度数の入れ子テーブルであっても申し分ありません(タイル・マップのようなものでも適しています)。しかしながら、 Tserial は自己参照テーブルを扱うことができません (<code>t={t}</code> または <code>t={{1,2,3},{t}}</code> など)。
  
; Q) どのようなデータ型を Tserial で扱えるか否か?
+
; Q) Tserial で扱えるデータ型は?
 
: A) 適切に扱えるものはシリアル化された文字列、数値、ブール値、およびテーブルです。テーブルはこれらの型にあるキーまたは値のいずれかにある任意のものを保有している場合があります。標準では、 Userdata および関数はシリアル化することができませんが、少しの追加作業にて対応することができます。
 
: A) 適切に扱えるものはシリアル化された文字列、数値、ブール値、およびテーブルです。テーブルはこれらの型にあるキーまたは値のいずれかにある任意のものを保有している場合があります。標準では、 Userdata および関数はシリアル化することができませんが、少しの追加作業にて対応することができます。
  
; Q) どうすれば Userdata (ユーザ・データー) をシリアル化することができますか?
+
; Q) Userdata (ユーザ・データ) をシリアル化するには?
 
: A) この目的のために Tserial.pack の第二引数は使用されます。 true であれば、 Tserial は Userdata および関数を読み飛ばします。関数であれば、関数はデータをシリアル化するために使用されます。テーブルであれば、テーブルはシリアル化を行うための索引として使用されます。
 
: A) この目的のために Tserial.pack の第二引数は使用されます。 true であれば、 Tserial は Userdata および関数を読み飛ばします。関数であれば、関数はデータをシリアル化するために使用されます。テーブルであれば、テーブルはシリアル化を行うための索引として使用されます。
  
Line 30: Line 30:
 
{{param|table|t|シリアル化を行うテーブル。自己参照はしないでください。}}
 
{{param|table|t|シリアル化を行うテーブル。自己参照はしないでください。}}
 
{{param|table|drop|Userdata および関数のような、シリアル化できないデータに遭遇したときの挙動。未指定時、 Tserial は前述のものに遭遇したときはエラーを投げます。 drop が関数である場合は、それは単一引数(データ)にて呼び出されて要求された文字列を返します (従って、自己シリアル化を行う関数を提供することができます)。}}
 
{{param|table|drop|Userdata および関数のような、シリアル化できないデータに遭遇したときの挙動。未指定時、 Tserial は前述のものに遭遇したときはエラーを投げます。 drop が関数である場合は、それは単一引数(データ)にて呼び出されて要求された文字列を返します (従って、自己シリアル化を行う関数を提供することができます)。}}
{{param|boolean|indent|true ならば、改行および字下げによる "人類可読可能形式"にて出力を行います。それ以外は、文字列は全て一行にて記述されます (結果として大きさは小さくなります)。}}
+
{{param|boolean|indent|true ならば、改行および字下げによる「人間が理解できる形式」で出力します。それ以外は、文字列は全て一行にて記述されます (結果として大きさは小さくなります)。}}
  
 
==== Tserial.unpack ====
 
==== Tserial.unpack ====
Line 41: Line 41:
 
{{#set:LOVE Version=Any}}
 
{{#set:LOVE Version=Any}}
 
{{#set:Description=テーブルを文字列へ変換および逆変換。ゲームの保存、マルチプレイヤー、などに適しています。}}
 
{{#set:Description=テーブルを文字列へ変換および逆変換。ゲームの保存、マルチプレイヤー、などに適しています。}}
 +
{{#set:Keyword=Serializing}}
 
{{#set:License=ZLIB license}}
 
{{#set:License=ZLIB license}}
 
{{#set:Author=User:Taehl}}
 
{{#set:Author=User:Taehl}}
Line 46: Line 47:
  
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|Tserial}}
+
{{i18n (日本語)|Tserial}}

Latest revision as of 14:32, 15 December 2019

Tserial について

Tserial は文字列をテーブルへ変換 ("シリアル化") および逆変換するためのライブラリです。これはゲームのセーブ/ロード機構 (ゲームの状態をファイルへ書き出します) およびマルチプレイヤー (ネットワークを経由してテーブルを渡すことができます) といった、いくつかの用途にて使用します。 Tserial は最大限使いやすくするために、テーブルを Lua スクリプトへ変換します。

ダウンロード

Dropbox から直接入手

連絡先

  • Taehl - SelfMadeSpirit@gmail.com

準備

  1. あなたのゲームのフォルダへ Tserial.lua を配置します。
  2. main.lua の先頭へ、 require"Tserial" の行を追加します。

よくある質問と回答

Q) Tserial は別のテーブルにある入れ子テーブルを圧縮できますか?
A) はい、できます。どのような深度数の入れ子テーブルであっても申し分ありません(タイル・マップのようなものでも適しています)。しかしながら、 Tserial は自己参照テーブルを扱うことができません (t={t} または t={{1,2,3},{t}} など)。
Q) Tserial で扱えるデータ型は?
A) 適切に扱えるものはシリアル化された文字列、数値、ブール値、およびテーブルです。テーブルはこれらの型にあるキーまたは値のいずれかにある任意のものを保有している場合があります。標準では、 Userdata および関数はシリアル化することができませんが、少しの追加作業にて対応することができます。
Q) Userdata (ユーザ・データ) をシリアル化するには?
A) この目的のために Tserial.pack の第二引数は使用されます。 true であれば、 Tserial は Userdata および関数を読み飛ばします。関数であれば、関数はデータをシリアル化するために使用されます。テーブルであれば、テーブルはシリアル化を行うための索引として使用されます。

関数

Tserial.pack

Tserial.pack(t, drop, indent)

文字列をテーブルへシリアル化します。テーブルの再生成を行った Lua スクリプトの文字列を返します。

table t
シリアル化を行うテーブル。自己参照はしないでください。
table drop
Userdata および関数のような、シリアル化できないデータに遭遇したときの挙動。未指定時、 Tserial は前述のものに遭遇したときはエラーを投げます。 drop が関数である場合は、それは単一引数(データ)にて呼び出されて要求された文字列を返します (従って、自己シリアル化を行う関数を提供することができます)。
boolean indent
true ならば、改行および字下げによる「人間が理解できる形式」で出力します。それ以外は、文字列は全て一行にて記述されます (結果として大きさは小さくなります)。

Tserial.unpack

Tserial.unpack(s, safe)

シリアルをテーブルへ逆変換します。文字列から再生成を行ったテーブル (または safe が true であり奇形文字列が与えられた時に nil およびエラーメッセージ) を返します。

string s
テーブルへ変換するシリアル。
string safe
true ならば、文字列とは無関係の部品は削除され、テーブルだけ残ります (これは信頼できない文字列の展開時に変態的なコードが実行されることを阻止します)。さらに奇形テーブルの発生時にエラーを投げるのではなく、 nil またはエラーメッセージを返します (従ってプログラムは不正な文字列でクラッシュできなくなります)。

そのほかの言語