RubyとPHPの比較(メソッド、引数、戻り値)
この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。
これらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a
メソッド
メソッド(関数)
とは何の処理をしているかをわかりやすくまとめた、かたまりのことです。
Rubyならdef
、PHPならfunction
で定義します。
それぞれコードを見ていきます。
⚫︎Ruby
def language(lang)
puts "#{lang}を勉強したい"
puts "#{lang}が話せます。"
end
#メソッドの呼び出し
language("英語")
language("中国語")
#英語を勉強したい
#英語が話せます。
#中国語を勉強したい
#中国語が話せます。
def languageのlanguageがメソッド名です。
メソッド名の後の(lang)が引数です。
defからendの間がメソッドです。
⚫︎PHP
function language($lang) {
echo "{$lang}を勉強したい";
echo "{$lang}が話せます。";
}
//メソッドの呼び出し
language("英語"); //引数=英語
language("中国語");
//英語を勉強したい
//英語が話せます。
//中国語を勉強したい
//中国語が話せます。 が出力
function languageのlanguageがメソッド名です。
メソッド名の後の($lang)が引数です。
functionから}までがメソッドです。
メソッドの注意
メソッドは呼び出されるまで処理が実行されないです。
メソッド名は自由に決められます。
メソッドの引数の書き方
メソッドの引数の書き方についてそれぞれ見ていきます。
引数がない場合
⚫︎Ruby
def program
puts "Rubyは楽しい"
end
#メソッド呼び出し
program
#Rubyは楽しい
この場合はprogram()と書くこともあればない時もあるみたいです。
⚫︎PHP
function program(){
echo "PHPは楽しい";
}
//メソッド呼び出し
program();
//PHPは楽しい
引数がない場合はこのように書きます。
Rubyとは違って()を書いたりします。
複数の引数がある場合
⚫︎Ruby
def program
puts "Rubyは楽しい"
end
def sayScore(me,score)
puts "#{me}のテストは#{score}点です。"
end
#メソッド呼び出し
program
sayScore("私",90)
#Rubyは楽しい
#私のテストは90点です。
⚫︎PHP
function program(){
echo "PHPは楽しい";
}
function sayScore($me,$score){
echo "{$me}のテストは{$score}点でした。";
}
//メソッド呼び出し
program();
sayScore("私",90);
//PHPは楽しい
//私のテストは90点でした。
引数のデフォルト値
引数に値を代入するのが引数のデフォルト値です。
⚫︎Ruby
def say_score(me="私",score=90)
puts "#{me}のテストは#{score}点です。"
end
#メソッド呼び出し
say_score #私のテストは90点です。
say_score(nil,70) #のテストは70点です。
say_score("あなた",80) #あなたのテストは80点です。
⚫︎PHP
function sayScore($me = "私",$score = 90){
echo "{$me}のテストは{$score}点でした。";
}
//メソッド呼び出し
sayScore(); //私のテストは90点でした。
sayScore(null,90); //のテストは90点でした。
sayScore("あなた",80); //あなたのテストは80点でした。
Rubyの色々な引数
Rubyでは引数にも色々な引数があります。
⚫︎キーワード引数
引数に名前がつきます。
def say_score(score: 90)
puts score
end
say_score(score:80) #80と出力
say_score #90と出力
実際は使用する機会があまりないみたいです。
⚫︎オプション引数
1つの引数で複数の値をハッシュ(連想配列)で受け取ります。
def score(**i)
p i #{:teamA=>30, :teamB=>20}
end
score(teamA: 30, teamB: 20)
#{:teamA=>30, :teamB=>20}と出力
⚫︎可変長引数
1つの引数で複数の値を配列で受け取ります。
def count(*i)
p i #[1,2,3]のように配列で受け取る
end
count(1,2,3)
#[1, 2, 3] と出力
引数の後にをつけると可変長引数*になります。
戻り値
return
文というものを使います。これはその場でメソッドが強勢終了させ、
メソッドの呼び出し側へ値を返すことができます。
⚫︎Ruby
def toeic(score)
if score >= 800
return "外資系で働ける"
else
return #戻り値=nil
end
end
#呼び出し元
result = toeic(800)
puts result
外資系で働けるが戻り値
です。
⚫︎PHP
function toeic($score){
if ($score >= 800){
return "外資系で働ける";
} else {
return; //returnの戻り値に何も指定しなければNullとなります。
}
}
$score = toeic(800);
echo $score; //外資系で働ける
外資系で働けるが戻り値
です。
Rubyで特に記述しなくても、自動的に処理が行われる戻り値
Rubyでは特に記述しなくても、自動的に処理が行われる(暗黙的な)戻り値が存在します。
それについてみていきます。
⚫︎Ruby
def modorichi(i)
i = i + 1
return i
end
puts modorichi(1)
#2
def modorichi(i)
i = i + 1
return i
i #戻り値なし
end
puts modorichi(1)
#2
戻り値がなくてもRubyなら出力できますが、PHPだと出力されないです。
理由はRubyには特に記述しなくても、自動的に処理が行われる(暗黙的な)戻り値があるからです。
def modorichi(i)
i + 1
end
puts modorichi(1)
#2
さらに省略したものです。
上で紹介している3つのコードは同じ処理のコードです。
戻り値を説明しているコードを元に上記のルールに従って書き換えてみます。
まずは上記のルールを使わない場合です。
⚫︎Ruby
def toeic(score)
if score >= 800
return "外資系で働ける"
else
return #戻り値=nil
end
end
#呼び出し元
result = toeic(800)
puts result
#外資系で働ける
上記のルールに書き換えるとこうなります。
def toeic(score)
if score >= 800
"外資系で働ける"
end
end
#呼び出し元
result = toeic(800)
puts result
#外資系で働ける
だいぶスッキリした書き方になりましたね。
もっとスッキリさせるとこうなります。
def toeic(score)
"外資系で働ける" if score >= 800
end
#呼び出し元
result = toeic(800)
puts result
#外資系で働ける
このようにRubyを1行で書くことができます。
参考資料
この動画をベースに記事を書きました。
Author And Source
この問題について(RubyとPHPの比較(メソッド、引数、戻り値)), 我々は、より多くの情報をここで見つけました https://qiita.com/Hashimoto-Noriaki/items/96eadd7076675fe19dc9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .