コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
うつりきまぐれ ◆8rpaj7TJiZUt
2020/5/18 14:35
最近 SBDBG のラッパーライブラリを作成中
あと同時に、PRG系命令でソースコードを勝手に改造して、あったら便利なSB++という名の拡張構文を追加。
SBDBGを読み込んで、改変した上でEXECする感じです。

DEF式 (命令・関数) とD言語のUFCS的なものです。UFCSとは f(o,a,b) を o.f(a,b) と書ける機能。メソッドチェーンもできます。

DIM YOSHINO=PERSON("吉野")

CALL YOSHINO

DEF PERSON(NAME$)
 RETURN (DEF
  ' DEF の外側の変数を参照
  ? "はい ";NAME$;"です。"
 END)
END

? "あかさたなはまやらわ".MID$(4).LEN()
' → 6

コメント

アバター
うつりきまぐれ 2020/5/18 14:41 ◆8rpaj7TJiZUt
ちなみにDEF式は別スロットに生成された関数名を返すのでCALLとか、SPFUNCにもぶち込めます。というか、CALLを省略する機能もつけてます。暗黙的なCALL (Implicit CALL) とか名付けた。

またDEF式は無名にすることもでき、その場合も引数やOUT引数を指定可能。(DEF(A) END) は引数Aをもつ無名DEFです。
ただし (DEF A END) は引数なしの命令Aとなります。使わないけど名前があるぶんには問題ないので、1引数をもつDEFの場合は適当に _ とかにします。この名前は被っていても問題ありません。

JavaScriptのfunction式と同じように、DEF名は内側からのみ参照できます。

DIM FACT=(DEF F(X)
 IF X==1 THEN RETURN 1
 RETURN X*F(X-1)
END)
?CALL(FACT,5) ' → 120

' 暗黙的CALL
?FACT(5) ' → 120
アバター
うつりきまぐれ 2020/5/18 16:31 ◆8rpaj7TJiZUt
一部内容を修正
アバター
ugly777 2020/5/18 16:59 ◆B7lOIJDWuOqi
検閲済
アバター
うつりきまぐれ 2020/5/19 17:09 ◆8rpaj7TJiZUt
お話の途中すみませんが、サーバにアップしました。
Wikiも書いたので興味のある人は見てやって下さい。

http://wiki.hosiken.jp/petc4/?Toukou%2FSBDBGLIBandSBPP

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -