メインコンテンツまでスキップ

REPL を使ってみる

REPL を開いて、1 + 1 とタイプして Ctrl-Enter を押下してみましょう。

結果が表示されたと思います。

REPL を開始

REPL にはいくつかショートカットを用意しています。

  • Ctrl-u で入力欄のクリア
  • Ctrl-k で入力欄のカーソル位置より後続をクリア
  • Ctrl-l で出力欄のクリア
  • Up arrow (↑), Down arrow (↓) で入力欄の履歴を参照
  • Ctrl-[ でタブをエディタに切り替える
  • Ctrl-] でタブをREPLに切り替える

REPL は複数行入力することもできます。Enter は改行になります。

以下を入力して、最後に Ctrl-Enter を押下してみましょう。

class Foo
def bar
'FooBar'
end
end

Foo.new.bar
Output
=> "FooBar"

シグナルを受け取る

以下をそれぞれ実行してみましょう。

foo 'bar'
Godot.emit_signal :foo, 'bar'
Output
[ foo ] method_missing: ["bar"]
=> <null>

[ foo ] signal emitted: "bar"
=> true

=> はメソッドの戻り値を表します。 戻り値以外にも、シグナルが発行された場合は出力に表示されます。

REPL でシグナルを受け取る

赤字は method_missing チャネルのシグナルが発行された場合、青字は channel シグナルが発行された場合に表示されます。

メソッドを定義する

以下を実行してみましょう。

@count = 0
def up
@count += 1
end

その後、up を何回か実行してみます。

Output
up
=> 1
up
=> 2
up
=> 3
100.times { up }
@count
Output
100.times { up }
=> 100
@count
=> 104
注意

ローカル変数は実行後に未定義になります。 そのため、count = 0 ではなく @count = 0 のようにインスタンス変数を使ってください。

require を使ってみる

require は、本来 mruby には定義されていないのですが、Godot プロジェクトのルートディレクトリから辿ったパスの Ruby ファイルをロードするメソッドとして用意しています。

require 'addons/redscribe/mrblib/math'

実行して、ロードに成功すると true を返します。ロードするのは1回目のみで、2回目以降は false を返します。

Output
=> true

require を実行した後、以下を実行してみましょう。

sin(1)
Output
=> 0.8414709848079

addons/redscribe/mrblib/math.rb には、extend Math が定義されていたので、sin メソッドが使えるようになりました。

addons/redscribe/mrblib/math.rb
extend Math
include Math

def π
PI
end

def(x)
sqrt(x)
end

# ...

REPL をリロードして初期化する

初期化するには以下を実行します。

reload!

再度 upsin メソッドを呼ぶと、method_missing になっていると思います。

up
sin(1)
Output
[ up ] method_missing: []
[ sin ] method_missing: [1]
=> <null>

以上が REPL の基本的な使い方です。

REPL を使うと手軽に Ruby のコードを試せるのでたくさん使ってみてください。