[an error occurred while processing this directive]
[an error occurred while processing this directive]$ irb irb(main): 001:0>ここで、好きなこと(print とか、代入とか)を書きます。 以下、irb(main): 001:0> は省略します。
> s = "Hello"s に "Hello" という文字列を代入しました。
> print s Helloprint を用いて、表示してみました。
> puts s Helloputs を使うと、文字のあとに改行が入ります。
> p s "Hello"p を使うと、オブジェクトらしく表示します。
> name = "kei" > print "Hello, #{name}" Hello, keiprint のあとには文字列があるのですが、ここで#{name}と書くと、nameという変数に入っている文字列を 呼び出すことができます。 今回はnameにkeiが入っているので、Hello, keiと表示されます。
> i = 3 > print i 3 > print i * 10 30当然数値も変数に代入したり、計算したりできます。
NAME = "kei"
names = ["kei", "lei", "mei"] names.push("nei") p namse (出力) ["kei", "lei", "mei", "nei"]リストのすべての要素について、ループさせてみます。
> names.each do |name| puts "name = #{name}" > end name = kei name = lei name = mei name = neiちょっと癖があるんですが、nameにnamesの要素が一つずつ代入されます。 do とendは、{ と } でもOKです。書き直してみると、こんな感じになります。
> names.each { |name| puts "name = #{name}" > } name = kei name = lei name = mei name = nei
> 3.times do |i| puts i > end 1 2 3ループには、普通にwhileとかforも使えます。
A = ["abc", "def"] if A.include?("abc") then puts '"abc" is in A' end
> h = {} > h["name"] = "kei" > h["age"] = 25 > h["country"] = "japan"ループもできます。順番にキーと値が入ります。
A = {} A[2] = 10 A["anc"] = "def" A.each{|a,b} p a, b }キーごとにループとかもできます。
h.keys.each do |k| p k, h[k] end値でループのときはこっち
A.values.each do |a| == DO SOMETHING == end.eachを忘れそうになる (しかも忘れてもエラーにはならない)ので注意!
def say_hello_to(name) print "Hello, #{name}" endこうしたあとで、関数を呼び出せます。まずは普通に ()を使った呼び出し。
say_hello_to("kei") (出力) Hello, kei=> nilRubyでは () を省略できます。ちょっとふしぎ。
say_hello_to "kei" (出力) Hello, kei=> nil関数なので、当然返り値を返せます。
def plus_2 (x) return x + 2 end y = plus_2(10)しかし実は Ruby ではReturnを書く必要が無くて、 最後の行で代入されたもの(最後の行を評価した値)が返ります。
def plus_2 (x) x + 2 end y = plus_2(10)もし最後の行が何も返さないと、返り値は全部nilが入ります。 Pythonみたく、関数の返り値は割りと柔軟です。
def version return "nexus", "6" end a, b = versiona には"nexus"が、bには6が入ります。
if a==0 then print a endthenは書いてもかかなくてもいいですが、endは書かないといけないです。
lunch = "pasta" case a when "pasta" pasta_count = 1 endwhen のあとに : とか { とか来ません。
p = /(\d\d)-(\d\d)/ s = "12-34" s =~p print $1, $2正規表現は文字列ではなく、 / /で囲みます。 そして、適当な変数と =~ でマッチさせます。
class a attr_accessor: abc end?とか!とかついたメソッド名があってはじめはぎょっとするけど、 ?とか!とかは普通の文字列として使われてるから、別に恐れる必要は無いです。ただ、気分的に ? が着くのは問い合わせのメソッドを、 ! が付くのは破壊的なメソッド (オブジェクトの中身が壊れる)を示すのが習慣らしいです。