ocaml-blockly icon indicating copy to clipboard operation
ocaml-blockly copied to clipboard

文字列結合のブロックを可変長にしてはどうか

Open maimai8 opened this issue 6 years ago • 1 comments

現在は、文字列結合を行うブロックは、2つの文字列を結合するものに限られていて、3つ以上の文字列を結合したいときには、文字列結合のブロックを入れ子にする必要があります。

そこで、

type ekimei_t = {kanji : string; kana : string; romaji : string; ken : string; shozoku : string}
let hyoji eki = match eki with
  | {kanji = a; kana = b; romaji = c; ken = d; shozoku = e} -> d ^ ":" ^ e ^ "," ^ a ^ "(" ^ b ^ ")"

上のようにekimei_t型の駅情報を文字列にする関数を定義してみたところ次のようになりました。 スクリーンショット 2019-03-29 14 52 29

入れ子が複雑になると可読性?が落ちる気がするので、リスト構造のように可変長ブロックにしてはどうでしょうか。(結合法則の仕組み等の問題が発生するのでしょうか。)

(日本語で失礼しました。)

maimai8 avatar Mar 29 '19 05:03 maimai8

こんちは、ありがとうございます!

ウワーこれはたしかにひどいです。 もともとブロックの形が適当なので、可読性がひどいのはもともとですがもっとひどいですね。

可変長のブロックを用意しておくの良いと思います。デフォルトで左結合ということにしておけば、思い違いも起きなそうだと思います。 ただ、歯車アイコンの説明がないと、その機能に気づきにくそうではあります。

でも画像を見る限りひどいので、可変長ブロック追加には賛成です。 (31日まで手元にPCがないので実装は遅れそうです。。)

harukamm avatar Mar 29 '19 07:03 harukamm