Rubyタブがもっと「Rubyらしく」なりました!class、case、true/false など多数の構文に対応 🎉 #61
takaokouji
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
スモウルビーのRubyタブで書けるRubyコードが、大幅に増えました!
class、unless、case、true/falseをはじめ、10種類以上の構文・演算子に新たに対応しました。Rubyの授業や自習で「あの書き方、スモウルビーでもできたらいいな」と思っていた構文が、きっと含まれているはずです。🎉 新しく使えるようになった構文・演算子
class定義スプライトのコードを
class構文でまとめて書けるようになりました。クラス名がスプライト名になり、set_nameで名前を指定したり、初期位置やサイズをset_x、set_sizeなどで設定することもできます。true/false条件式や変数への代入で、
trueとfalseをそのまま書けるようになりました。case文値によって処理を分岐する
case...when構文が使えるようになりました。unless構文・修飾子if !と書く代わりに、より読みやすいunlessが使えるようになりました。if修飾子1行で条件を書く
if修飾子も使えるようになりました。if...elsif...end複数の条件を
elsifでつなぐ書き方ができるようになりました。!=演算子「等しくない」を表す
!=が使えるようになりました。>=/<=演算子「以上」「以下」を表す比較演算子が使えるようになりました。
to_i/to_sメソッド文字列と数値の変換メソッドが使えるようになりました。
list.empty?リストが空かどうかを調べる
empty?が使えるようになりました。return文メソッドの途中で処理を抜ける
returnが書けるようになりました。浮動小数点数リテラル(
1.0など)の保持1.0のように小数点以下がゼロの数値が、変換後も1.0のまま保たれるようになりました(以前は1に丸められていました)。💡 技術的な仕組み(興味がある人向け)
スモウルビーのRubyタブでは、RubyコードとScratchの命令ブロックを双方向に変換しています。「RubyタブでRubyを書く → 命令ブロックに変換」だけでなく、「命令ブロックを編集 → Rubyタブに戻したとき、元の書き方を再現する」ことも重要です。
Scratchの命令ブロックにはRubyの
unlessやcase、true/falseに直接対応するブロックがありません。そのため、@ruby:syntax:unless、@ruby:literal:true:1のようなコメントアノテーションをブロックに付与することで、逆変換時に元のRuby構文を復元しています。また、
!=は!(a == b)、>=はa > b || a == bのように複数のブロックの組み合わせで表現しており、それらをまとめて識別するためのアノテーション方式も整備しました。📚 詳細情報
実装の詳細については、以下の Issue をご覧ください:
ぜひ新しくなったRubyタブで、より「Rubyらしい」コードを楽しんでみてください!
💬 ご意見・ご質問をお待ちしています
もしスモウルビーを使っていて、これまでと動きが違う、この動きは期待したものと違う、などなど、気になる点があれば 気軽に contact @ smalruby.jp までご連絡ください。
一年に数件しか問い合わせがないので、さみしいくらいの状況ですので、本当に、遠慮なく、ご連絡ください。
⭐ GitHub Starで応援してください
スモウルビーの開発を応援してくださる方は、ぜひGitHubリポジトリにStarをつけてください!
👉 smalruby/smalruby3-editor にアクセスして、右上の「Star」ボタンをクリックするだけです。
皆さまの応援が、開発の大きな励みになります!
Beta Was this translation helpful? Give feedback.
All reactions