1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyの基本(変数/型/条件分岐/メソッド/クラス等)

Posted at

Ruby

サイトではなく、Webアプリケーションを作るための言語として、日本人によって作られた「楽しさ」を重視した言語

  • puts など、命令を出すものを メソッド(関数) といい、複数の処理を1つにまとめたもの
  • メソッドに渡す値を 引数 という

変数と定数

変数

  • 変数:値を変えることが可能(代入できるもの)
    • 変数名の1文字目は、小文字のアルファベットか _(アンダースコア)のみが使用可能
    • 数字で始まる変数名はNG

定数

  • 定数:値を変えることができないもの
    • 定数の始まりは大文字で、 _ で区切る(スネークケース)

型変換

文字列や数値をそれぞれの方に変換し、組み合わせることができる

型変換方法 説明
.to_s 整数→文字列
.to_i 文字列→整数

上記の方法を使うと煩わしい場合があるため、変数展開文字列展開("#{word}")が便利
ダブルクォーテーションで囲った場合のみ機能し、どんな型も変換できる

name = "太郎"
weight = 60
puts "#{name}さんの体重は#{weight * 2}kgです" 
# 出力: 太郎さんの体重は120kgです
# 入力は {} (波括弧)、出力は [] (角括弧)

👉🏻 if条件分岐

== : 一致
!=: 不一致
! : 否定
&& : どちらも正しければ
|| : どちらかが正しければ


👉🏻 while

指定した条件式が真(true)の間、繰り返し実行

while 条件 do
    処理
end

👉🏻 for

範囲内を順に繰り返す

for 変数 in(範囲,ハッシュ,配列) do
    処理
end

👉🏻 rand

ランダムで数字を出力
ゲーム内のサイコロをイメージすると分かりやすい

無限ループが発生した場合、Ctrl+Cで強制終了


👉🏻 each

要素を順に取り出す

(ハッシュ等).each do |変数|
    処理
end

break:強制終了


👉🏻 メソッド

複数の処理を1つにまとめて扱いやすくしたもの

length

文字列型に使用すると文字数を数えてくれる

puts "Qiita".length
# 出力: 5

reverse

文字列を逆に表示

puts "Qiita".reverse
# 出力: atiiQ

include?

引数に指定した文字列が含まれているかどうかを調べる

puts "Qiitaでアウトプット".include?("Qiita")
# 出力: true
# 含まれていない場合はfalseが出力

methods

使用可能なメソッドを一覧で表示できる

puts "Qiitaでアウトプット".methods
# 出力: encode
#    encode!
#    include?
#    %
#    *
#    +
#    count
#    partition
#    sum

def

オリジナルのメソッドを作れる!

def メソッド名(引数)
	処理(戻り値)
end

def greeting(name)
  "Hello, #{name}!"  # この行のnameは、引数で渡すname
end
puts greeting('John')  # 'John'を引数として渡す

# 出力: Hello, John!
def greeting(name)
  return "Hello, #{name}!"
  "Good morning, #{name}!"
end
puts greeting('John')

# 出力: Hello, John!

重複する場合は後者が返されるが、returnを追加すれば、returnが返される


👉🏻 シンボル :シンボル

:コロンで定義したものを、シンボルと言う
文字列とは違い、シンボルは不変で、プログラム内で1つだけのインスタンスを持つため、
同じ名前のシンボルは常に同じオブジェクトIDを持つ
この特性が、シンボルの処理が高速である理由の一つ

  • .object_id(メソッド)

オブジェクト固有のid(割り振られた整数)を取り出すことができる

# 文字列オブジェクト
dog1 = "犬"
dog2 = "犬"

# シンボルオブジェクト
dog3 = :
dog4 = :

puts dog1.object_id
puts dog2.object_id
puts dog3.object_id
puts dog4.object_id

実行したとすると、以下のような結果になる

<文字列オブジェクトの場合>
70292126869460
70292126869440
<シンボルオブジェクトの場合>
1058268
1058268

整数管理しているため、処理が高速で、検索などに向いている

つまり他のデータとは重複しないことが保証されており、
このように**「同じものが複数あると困るもの」**を扱う時にシンボルが使われる。


👉🏻 class

class内は、メソッドを集約したようなもの(設計図)
class内のメソッドをインスタンスメソッドという

  • クラス   :設計図
  • メソッド  :設計図の内容
  • インスタンス:設計で作られるもの

インスタンス名 =  [クラス名.new]  : 代入
インスタンス名.メソッド名(引数)   : 呼び出し

  • .class : どのクラスに属するか調べることができる
  • .join() : ()内の文字を、文字の間に入れる
  • self.メソッド(引数) : .newは不要で、クラスメソッドとして1行で呼び出すことができる

👉🏻 『クラスの継承』

親クラスから継承することで、子クラス内で再度定義(メソッド)する必要がない
=可読性が高いコードになる!!

継承すべきか迷った時は、『AはBの一種である(is-a)』が成立するかで考える
例えば・・・ バスは車の一種である
       猫は動物の一種である

オーバーライド:子クラスで親クラスの上書きができる

子クラスのメソッド内に「super」と書くと、親クラスの同名メソッドを取り出すことができる

.superclassで親クラスを調べることができる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?