2007年10月12日

Python | Django AMF 数値型の変換

Django AMFでActionScriptのNumber型の数値はPythonのfloat型になる。例えばFlashでRPCメソッドの引数に整数を渡した場合、Python側のint型を必要とするプログラムでは受け取ったfloat型の数値をいちいちint()関数で変換しなくてはならない。AS3でAMF3の場合はint型があるから特に問題はないのだが、int型のないAS2でAMF0の場合の話。

Javaだったら引数の型を指定できint型に変換されるけど、Pythonでは明示的に変換しないといけないから面倒くさい。

個人的には浮動小数点数やそれを含むオブジェクトをサーバに送ることは滅多にないので、ASのNumber型はPythonのint型に変換された方が都合がいいケースが多い。
どうしたものかと考え、次の三つの条件が揃っている場合にASのNumber型をPythonのfloat型として受け取った後、int型に自動変換するようにした。
これもDjango AMF 0.6の新機能。

1. settings.pyに AMF_NUMBER_TO_INT = True という設定がある。
2. AMF0を使っている。
3. 受け取ったfloat型数値が int(float_value) == float_value の条件を満たす。

float型を滅多に使わないのであれば、AMF_NUMBER_TO_INTを有効にしておいて、必要なところでint型の値をfloat型に変換すればいい。

Posted by otsuka : 04:34 | Comment (0) | Trackback (0)
Comment









名前、アドレスを登録しますか?