0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPer が Rubyに入門したメモ

0
Last updated at Posted at 2021-02-05

前提

JSと同じようにすべてがオブジェクト
nullではなく、nilで、nilすらもオブジェクト

セミコロン

使わない

コメント

#つかう

# コメント

変数

型推論される
PHPの$なし定義と同じ

ローカル変数は先頭を英小文字か"_"にする
ローカル変数のスコープは宣言されたブロック、メソッド定義

val = 1;
name = 'name'

定数

大文字で定義
定数とか名乗ってるのに再代入できる

MAX = 10

MAX = 11

グローバル変数

$をつける

$global_val = 'global'

関数

英小文字か"_"で始まる必要がある

def ~ end

引数ない場合()が不要
引数ある場合は()内に。デフォルト引数も可能

明示的にreturnしない場合、最後の式の評価が返される。
明示的にreturnもできる

def hello
  puts 'hello'
end

def sum(val, val2 = 2)
  val + val2
end

def sum2(val, val2 = 2)
  return val + val2
end

演算子

特に違いはなさそう
++のインクリメントはない


# 加算
sum = 1 + 1 # 2
# 減算
sub = 5 - 1 # 4
# 乗算
multi = 10 * 2 # 20
# 累乗
expo = 2 ** 3 # 8
# 除算
divi = 10 / 3 # 3
# 剰余 
surplus = 10 % 3 # 1

比較に関してもほぼ同じ
===の厳密比較はない
参考演算子はある

puts 10 == 2 # false
puts 10 < 2  # false
puts 10 != 2 # true
puts true ? 'trueです' : 'falseです'

文字列

Stringクラス

シングルクォーテーション、ダブルクォーテーションで囲ったもの
ダブルでは変数埋め込める

hoge = 'hoge'

puts "hello #{hoge}"

配列

[]で定義
連想配列のことはハッシュと呼び、{}で定義する。なおアクセスするときは普通の配列のようになる

arr = [10, 'hgoe']
arr[0] # 10

hash = {'key' => 'value'}
hash['key'] # 'value'

真偽値

何故か0も真になる
falseとnilが偽

puts 0 ? '真' : '偽'

クラス

@@変数名でクラスプロパティを定義できる
PHPでいうstaticプロパティ

@変数名でインスタンス変数を定義できる
PHPでいうプロパティ。いきなりメソッドで定義して使用してよい

def self.メソッド名でクラスメソッドを定義できる
PHPでいうstaticメソッド


class User
  # クラスプロパティ(static プロパティにあたる?)
  @@name = 'static的な'
  
  def initialize
    # PHPでいうプロパティに当たる
    @id = 1
  end

  def updateName
    @@name = 'アップデートした'
  end

  def getId
    @id
  end

  def getName
    @@name
  end

  # クラスメソッド => staticメソッド
  def self.hoge
    puts 'hoge'
  end
end


User.hoge # hoge
# インスタンス化
user = User.new

継承

class Admin < Userのように継承先 < 継承元で指定

モジュール

PHPでいうTraitに近い

module Calculator
  def sub(val, val2)
    val + val2
  end

  module_function sub
end

# ruby単体なら読み込みしてやる(Railsなら自動でやってくれてる)
require './calculator.rb'
class Hoge
  include Calculator
end

hoge = Hoge.new
hoge.sub(1,2)

制御文

if

if 式 endで記載
式の後ろにthenをつける事もできるが省略してよい

elseifではなくelsif elseとelsでわかりにくく違うくせにelseはある。
そこはelsじゃないんだ...

if 1 < 2 then

end


val = 10
if val < 2

elsif val < 3

else

end

後置if

後ろに書かれているifが先に評価され、trueになれば、前が評価される
多言語使用者読みにくい気がするが、ruby界隈では可読性があがるらしい

val = 0

# 先にif val.zero?が評価される
puts val if val.zero?

for

rubyのforは指定したオブジェクトから順に値を取り出して繰り返しを行う
指定の回数ループさせる場合..で範囲オブジェクトを作成する

そのほかeachも使える

ループ条件がない場合loopが使えるがちゃんとbreakしないと無限ループする

for val in 1..10
  puts val
end

(1..10).each { |val|
  puts val
}

(1..10).each do |val|
 puts val
end

loop {
  break
}

例外

begin
#  エラーが発生する可能性のある処理
rescue
#  エラーが発生した場合の処理
else
#  エラーが発生しない場合の処理
ensure
#  エラー発生の有無にかかわらず行う処理
end

# エラー投げる
raise "error"

0
1
2

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?