aiscript icon indicating copy to clipboard operation
aiscript copied to clipboard

hex APIの変更の提案

Open marihachi opened this issue 1 year ago • 10 comments

hex APIの変更の提案

現行API

@Num:to_hex(x: num): str
@Num:from_hex(hex: str): num

方針

  • 配列を16進文字列(hex)にする用途の方が多そう
    • 数値単体をhexにする用途はあまりないと思われるが、無くはなさそう
  • プリミティブプロパティを積極的に使う

新API

  • 各オブジェクトにあるto_hexでhexを生成する基本コンセプト
  • 文字列からはstd関数を使って配列に変換できる
@(v: num).to_hex(): str
@(v: arr<num>).to_hex(): str
@Arr:from_hex(hex: str): arr<num>

marihachi avatar Feb 10 '24 02:02 marihachi

@Arr:from_hex(hex: str): arr<num>

数値の境目は何で区切る感じですか?

FineArchs avatar Feb 10 '24 07:02 FineArchs

桁が決まっているわけではないので使い勝手は良くない気がします

salano-ym avatar Feb 10 '24 08:02 salano-ym

2桁ずつ(0~255)の区切り文字なしで考えてます 確かに区切り文字は考えてなかったです

marihachi avatar Feb 10 '24 08:02 marihachi

32bitの値をhexで表示したい場合などの要求は満たせないですね..

marihachi avatar Feb 10 '24 08:02 marihachi

こうですかね?

案2

@(v: num).to_hex(): str
@Num:from_hex(hex: str): num // 変更なし

marihachi avatar Feb 10 '24 08:02 marihachi

to_hexだけプリミティブプロパティ化する感じですね。 正直@Num:from_hex(hex: str): numの名前空間が引数ではなく返り値の型になっている点が気になりますが、Strにすると更に違和感が大きくなる気がするので特例でNum:でもいいと思います。

FineArchs avatar Feb 10 '24 09:02 FineArchs

候補としては

  • @Num:from_hex(hex: str): num
  • @Hex:to_num(hex: str): num

ですかね

marihachi avatar Feb 10 '24 09:02 marihachi

@Hex:to_num(hex: str): num

これ一つのために名前空間を作るのか…という気はしますね

FineArchs avatar Feb 10 '24 10:02 FineArchs

numの生成」に視点を置くならNumでいいと思います 名前空間は引数がどうかより意味的にどこに所属すべきかで考える方がしっくり来ます

salano-ym avatar Feb 10 '24 10:02 salano-ym

まあ@Num:from_hex(hex: str): numでよさそうですかね

FineArchs avatar Feb 10 '24 11:02 FineArchs