REPL を使ってみる
REPL を開いて、1 + 1
とタイプして Ctrl-Enter
を押下してみましょう。
結果が表示されたと思います。
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
=> "FooBar"
シグナルを受け取る
以下をそれぞれ実行してみましょう。
foo 'bar'
Godot.emit_signal :foo, 'bar'
[ foo ] method_missing: ["bar"]
=> <null>
[ foo ] signal emitted: "bar"
=> true
=>
はメソッドの戻り値を表します。
戻り値以外にも、シグナルが発行された場合は出力に表示されます。
赤字は method_missing チャネルのシグナルが発行された場合、青字は channel シグナルが発行された場合に表示されます。
メソッドを定義する
以下を実行してみましょう。
@count = 0
def up
@count += 1
end
その後、up
を何回か実行してみます。
up
=> 1
up
=> 2
up
=> 3
100.times { up }
@count
100.times { up }
=> 100
@count
=> 104
ローカル変数は実行後に未定義になります。
そのため、count = 0
ではなく @count = 0
のようにインスタンス変数を使ってください。
require を使ってみる
require
は、本来 mruby には定義されていないのですが、Godot プロジェクトのルートディレクトリから辿ったパスの Ruby ファイルをロードするメソッドとして用意しています。
require 'addons/redscribe/mrblib/math'
実行して、ロードに成功すると true
を返します。ロードするのは1回目のみで、2回目以降は false
を返します。
=> true
require
を実行した後、以下を実行してみましょう。
sin(1)
=> 0.8414709848079
addons/redscribe/mrblib/math.rb には、extend Math
が定義されていたので、sin
メソッドが使えるようになりました。
extend Math
include Math
def π
PI
end
def √(x)
sqrt(x)
end
# ...
REPL をリロードして初期化する
初期化するには以下を実行します。
reload!
再度 up
や sin
メソッドを呼ぶと、method_missing になっていると思います。
up
sin(1)
[ up ] method_missing: []
[ sin ] method_missing: [1]
=> <null>
以上が REPL の基本的な使い方です。
REPL を使うと手軽に Ruby のコードを試せるのでたくさん使ってみてください。