2010-12-13 8 views
2

私は現在、ルビーからPythonにオブジェクトを転送して元に戻す必要があるプロジェクトに取り組んでいます。私はyamlのようなものを見てきましたが、配布する時間が来たときに、図書館などの依存関係に取り組んでいないので、自分自身で書くことに決めました。私はこのシリアライズフォーマットがどのように動作するかを書いてきましたhereクロスランゲージオブジェクトのシリアライゼーションでルビ記号を処理する方法

私の質問は、この形式はルビーとPythonのクロス言語を扱うためのものです。 ルビーのシンボルをどのようにシリアライズする必要がありますか?私はPythonで同じように動作するオブジェクトを認識していません。シンボルを含むダンプが失敗するかどうか私はちょうど文字列としてそれをシリアル化する必要がありますか?何が最善でしょうか?

+0

JSONとYAMLでできないのは何ですか?これらは、十分に文書化されており、すでに多くの言語で実装されている標準として受け入れられています。 –

+0

それは彼らがうまくいかないということではなく、配布する時間が来たらすべての依存関係に取り組んでほしくないと思っています。 – Ryex

答えて

1

あなたのプロジェクトに必要なものはありませんか?シンボルが重要な場合は、そのシンボルに対処する方法が必要です。

私はRubyのプログラマーではありませんが、私が読んだところでは、文字列に変換するのがおそらく最も簡単です。標準のPythonインタプリタは、同じ短い文字列に対してメモリを再利用します。これは、シンボルを使用するために推奨される重要な理由のようです。

EDIT:他のプログラマーでも機能する必要がある場合は、値を前後に渡して変更しないでください。したがって、シンボルを適切に処理するか、エラーをすぐにスローする必要があります。

class Symbol(str): 
    pass 

# In serialising code: 
if isinstance(x, Symbol): 
    serialise_as_symbol(x) 
+0

私はあなたの権利を仮定します、私はそれらを完全に残して、 stingsはオプションかもしれませんが、Python側でそれらをシリアライズすると、シンボルの代わりに文字列としてルビに戻ってくるでしょう。 1つの選択肢は、Python側でシンボルクラスを構築することです。つまり、Pythonはそれらをルビにシリアル化する方法を知っているはずです。 – Ryex

+0

@Ryex:シンボルであることはどれくらい重要ですか?それは単に文字列でそれをするのが簡単なのでしょうか? (私たちは皆、私たちのお気に入りのような言語を作ろうとしていると思う - シンボルに慣れていない、私はそれほど必要性は見当たらない) –

+0

pythonの文字列でも、ルビのシンボルになる可能性があるので、それを使用するシンボルはその事実です。私は記号を忘れることができますが、他の人が自分のデータ構造をどのようにプログラムするのか分からず、作者を制限することなく私の書かないデータ構造のためにこの作業をしたいと思います。 – Ryex

0

JSONやXMLのような標準的なデータ交換フォーマットを使用していない理由は何ですか?それらは無数のアプリケーション、サービス、プログラマーにとって受け入れられるようです。

0

記号がつまずきのブロックである場合、3つの選択肢があります。それらを許可せず、その場で文字列に変換するか、他の言語で普遍的および/または無害にする方法を見つけます。

関連する問題