[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, kei
print のあとには文字列があるのですが、ここで#{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=> nil
Rubyでは () を省略できます。ちょっとふしぎ。
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?とか!とかついたメソッド名があってはじめはぎょっとするけど、 ?とか!とかは普通の文字列として使われてるから、別に恐れる必要は無いです。ただ、気分的に ? が着くのは問い合わせのメソッドを、 ! が付くのは破壊的なメソッド (オブジェクトの中身が壊れる)を示すのが習慣らしいです。