もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

Ruby勉強その1(基礎の基礎)

はじめに

こんばんは。Go言語の勉強やりたいんですが、積本がやまほどあるのでそれを消化するのと、今後はRubyの案件もとっていけるようにRubyの勉強をしようと思っています。

ちなみにGoは別日でちゃんとやる予定です。本も買ってるしね。

とりあえず、phpしかメインで触ってなかった僕ですが、pythonはまぁまぁわかるようになったし、rubyへの言語ジャンプも、頑張れば可能かなと思っています。

チュートリアルやオンラインの学習サイトなど見ながら気になった点を忘れないように上げときます。

主にphpとの違いを列挙してみました。

やってみた

べき乗

phpでは pow() 関数を使って表現するけど、rubyは演算で可能みたい

puts 10 ** 5
# 100000

型変換

to_s とか to_i とかでやるみたい

puts "test => " + 10
# Traceback (most recent call last):
    1: from test01.rb:1:in `<main>'
test01.rb:1:in `+': no implicit conversion of Integer into String (TypeError)

puts "test => " + 10.to_s
# test => 10

if文

目新しい感じはなかったけど、elsifが面白かった。

elseifにしなかったのはなんでだろう。

message = "BBB"
if message == "AAA"
    puts "Yes"
elsif message == "BBB"
    puts "No"
else
    puts "???"
end
# No

unless

条件が正しくない場合に使うっぽい。

つまりif の否定式ってことだと思うけど、使い分けはどうやるんだろう?

rubyで動いているプロダクションコード見てみたい。

message = "AAA"
unless message == "BBB"
    puts "BBBではありません。"
end
# BBBではありません。

case

switchみたいな感じだと思うけど、switchより便利っぽい

score = 70
case score
    when 0..30
        puts "留年決定"
    when 31..60
        puts "追試決定"
    when 61..85
        puts "合格ライン"
    when 86..100
        puts "天才だ!"
end
# 合格ライン

times

数値の回数繰り返し処理を行う

forとの使い分けを知りたい

10.times{|i|
    puts i
}
# 結果
0
1
2
3
4
5
6
7
8
9

upto

数値から指定した数字まで繰り返し処理を行う。

これはtimesよりはforとのすみ分けができてそう。

10.upto(15){|i|
    puts i
}
# 結果
10
11
12
13
14
15

downto

uptoの逆

10.downto(5){|i|
    puts i
}
# 結果
10
9
8
7
6
5

redo

繰り返し処理をもう一度やり直す。

これが一番へぇとなった。

○○の処理の場合、繰り返すみたいな処理って結構あったりするから、これは地味に使えそう。

phpだとどうやってるかな・・・

同じ値で上書きしたりしてお茶を濁したりしてそう。。。

count = 0
10.times{
   count += 1
   if count == 5
       redo
   end

   puts count
}
# 結果
1
2
3
4
6
7
8
9
10
11

終わりに

phpとの違いがいろいろあっておもしろかった。

次も多分Ruby関係になりそう。

もしくは本読んだ書評。

まとまりないなこのブログ。

でもいいよね。備忘録だし。

sayonara sayonara