はじめに
自分はぺちぱーで、今まで業務で触ったのはphpだけでした。
自分の扱える言語を増やすため、Rubyをやることにしました。
当然ですがPHPと違うところがいろいろあって面白かったです。
特に自分的に、「あ、ここ地味だけど、違うな〜」と思うことを、初歩的なところなんですが、書いておこうと思います。
バージョン
Ruby
[vagrant@localhost ~]$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
PHP
[vagrant@localhost ~]$ php -v
PHP 7.0.3 (cli) (built: Feb 3 2016 11:40:05) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
インクリメントのやり方違う
php
test.php
$i = 1;
$i++;
echo $i;
// => 2
$i--;
echo $i;
// => 1
ruby
test.rb
i = 1
i += 1
puts i
# => 2
i -= 1
puts i
# => 1
コメントの書き方違う
php
一行コメント
test.php
// $test = "ベッキー";
# $test = "ゲス";
複数行コメント
test.php
/**
$test1 = "ベッキー";
$test2 = "ゲス";
echo $test1 . ":" . $test2;
*/
ruby
一行コメント
test.rb
# test = "ベッキー"
複数行コメント
test.rb
=begin
test = "ベッキー"
=end
elseif文の書き方違う
php
test.php
if ($number === 1)
{
echo "背番号は1番です。";
}
elseif ($number >= 2)
{
echo "背番号は2番以上の数字です。";
}
else
{
echo "貴方の背番号はありません。";
}
ruby
test.rb
if number == 1
puts "背番号は1番です。"
elsif number >= 2
puts "背番号は2番以上の数字です。"
else
puts "貴方の背番号はありません。"
end
変数の結合のやり方違う 文字列の結合のやり方違う
php
test.php
$prefix = "俺のこの手が";
$suffix = "光って唸る";
echo $prefix . $suffix;
// => 俺のこの手が光って唸る
$prefix = "バック・トゥ・ザ・フューチャー";
$suffix = 2;
echo $prefix . $suffix;
// => バック・トゥ・ザ・フューチャー2
ruby
test.rb
prefix = "俺のこの手が"
suffix = "光って唸る"
puts prefix + suffix
# => 俺のこの手が光って唸る
prefix = "バック・トゥ・ザ・フューチャー"
suffix = 2
puts prefix + suffix.to_s
# => バック・トゥ・ザ・フューチャー2
ループのスキップの仕方が違う
php
test.php
$i = 0;
while($i < 10)
{
$i++;
if ($i == 5)
{
continue;
}
echo "ループ" . $i . "回目\n";
}
ruby
test.rb
i = 0
while i < 10
i += 1
if i == 5
next
end
puts "ループ#{i}回目"
end
インスタンス作る方法違う
php
test.php
class User
{
private $name = null;
public function __construct($name)
{
$this->name = $name;
}
public function printName()
{
echo $this->name;
}
}
$user = new User("ゲス男");
$user->printName();
# => ゲス男
ruby
test.rb
class User
def initialize(name)
@name = name
end
def printName
puts @name
end
end
user = User.new("ゲス男")
user. printName()
ゲッター / セッターの作り方違う
php
test.php
class User
{
private $name = null;
private $age = null;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getAge()
{
return $this->age;
}
public function setAge($age)
{
$this->age = $age;
}
}
$user = new User("ゲス男", 20);
echo $user->getAge();
// => 20
$user->setAge(25);
echo $user->getAge();
// => 25
ruby
test.rb
class User
def initialize(name, age)
@name = name
@age = age
end
attr_accessor :age
end
user = User.new("ゲス男", 20)
puts user.age
# => 20
user.age = 25
puts user.age
# => 25