More than 1 year has passed since last update.

はじめに

初めてrubyで開発をすることになり、ドットインストールのruby入門で勉強しまして、そのときに「おおおッ!」と思ったことのメモ。
普段はjava, phpで開発をすることが多いので、それらの言語ではできないことへの反応になっていると思います。

定数と変数

1文字目を英大文字で始めると定数
1文字目を英小文字で始めると変数
というルールなので、型を書く必要がなく、名前で判別ができる。

sample.rb
msg = "これは変数"
MSG = "これは定数"

破壊的メソッド

破壊的メソッドは、代入なしに値を書き換える。
多くの破壊的メソッドには!がついていて、これは注意すべきメソッドの意である。

sample.rb
str = "kick ass"

# upcaseは大文字を返却するメソッド
puts str.upcase  # KICK ASS
puts str         # kick ass(破壊しない)

puts str.upcase! # KICK ASS
puts str         # KICK ASS(破壊的)

真偽値を返すメソッド

?のつくメソッドはbooleanを戻り値とする。
名前で戻り値がわかる。

sample.rb
str = "kick ass"
puts str.empty? # false

str = ""
puts str.empty? # true

型変換

javaはやや煩雑で面倒だし、phpでは曖昧で不安だけれど、rubyはそのいいところをとった感じ。
to_i 整数変換
to_f 実数変換
to_s 整数変換

sample.rb
x = 5    # int
y = "10" # string

# p x + y    # エラーになる
p x + y.to_i # 15
p x + y.to_f # 15.0
p x.to_s + y # "510"

%記法

%Qまたは%qを使うと""または''を省略して値を代入できる。

sample.rb
str = %Q(hello, "kick ass") # str = "hello, \"kick ass\""と同じ
str = %q(hello, 'kick ass') # str = 'hello, \'kick ass\''と同じ

配列の場合、%Wまたは%wを使う。
空白で要素を区切るので、空白の代入はバックスラッシュで行う。

sample.rb
arr = %W(kick_ass hit_girl) # arr = ["kick_ass", "hit_girl"]と同じ
arr = %w(kick_ass hit_girl) # arr = ['kick_ass', 'hit_girl']と同じ

後置if文

sample.rb
puts "SINANJU" if model_number == "MSN-06S"

# ↑と同じ
if model_number == "MSN-06S"
  puts "SINANJU"
end

アクセサメソッド

宣言のみでgetter, setterを実装できる。
attr_accessor getter, setter
attr_reader getterのみ
attr_writer setterのみ

sample.rb
class MobileSuit
  attr_accessor :model_number
end

ms = MobileSuit.new()
ms.model_number = "MSN-06S" # setter
p ms.model_number           # getter

メンバ変数に直接アクセスしているように見えるが、メソッド経由であり、以下と同意。

sample.rb
class MobileSuit
  def model_number=(model_number)
    @model_number = model_number
  end

  def model_number
    return @model_number
  end
end

ms = MobileSuit.new()
ms.model_number = "MSN-06S" # setter
p ms.model_number           # getter
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.