##はじめに
「Rubyでプログラミングの基礎を学んだから、次はjsやってみようかな!」
↓
「書き方ごちゃごちゃになって、何が何だかよくわかんねー!!」
こんな人もいるのでは?
僕自身も以前、詰め込みすぎでパンパンになりましたので、書き方の違いをわかりやすくまとめてみました。
一つ一つ覚える必要はありませんので、この記事を、ストックしていただければと思います。
オブジェクト指向の理解も多少深まると思いますので、最後までご覧ください!
文字出力
基本となる文字の出力。言語によって処理のされ方が違うので難しいところですが、基本なのでしっかり押さえましょう。Javaはやっぱり記述が長いですねw
#Ruby
puts "こんにちは"
#PHP
echo "こんにちは";
//Java
System.out.println("こんにちは");
//JavaScript
console.log("こんにちは");
変数代入
プログラミングの超基本、変数代入です。
#Ruby
name = "Tom"
#PHP
$name = "Tom";
//Java(String、intなどの型を指定する)
String name = "Tom";
//JavaScript
let name = "Tom";
変数展開、文字列+変数
これもよく使いますね。全部似てますが、違いがあります。※書き方はあくまで一例です
#Ruby
"私の名前は#{name}です。"
#PHP
"私の名前は{$name}です。"
//Java
"私の名前は"+ name + "です。"
//JavaScript(''ではなく``(バッククオーテーション)で囲む)
`私の名前は${name}です。`
##if文
処理の代表と言えばif文でしょう。elsifのところの違いに注意です。
#Ruby
if age >= 20
#処理
elsif age >= 10
#処理
else
#処理
end
#PHP
if (age>= 20){
#処理
}elseif (age >= 10){
#処理
}else{
#処理
}
//Java & JavaScript
if (age>= 20){
//処理
}else if (age >= 10){
//処理
}else{
//処理
}
配列と取り出し方
配列の取り出しもよく使いますね、1つづつ取り出す方法も言語によっていろんなのがあります。
#Ruby
names = ["Tom","Kenta","John"]
names[0]
#PHP
$names = array("Tom","Kenta","John");
$names[0];
//Java
String names[] = {"Tom","Kenta","John"};
names[0];
//JavaScript
const names = ["Tom","Kenta","John"];
names[0];
ハッシュ、連想配列、オブジェクトと取り出し方
言語によって呼び方が違うので、検索する際には注意してください。
#Ruby(ハッシュ)
user = {name: "Tom",age: 20}
user[:name]
#PHP(連想配列)
$user = array("name" => "Tom","age" => 20)
$user["name"]
//JavaScript(オブジェクト)
const user = {name: "Tom",age: 20};
user.name
##通常のメソッド、関数
ここからが重要なところです。今回は2つの値を合計するaddメソッド(関数)を作りました。
戻り値も重要なので、しっかり押さえましょう。
#Ruby
def add(a, b)
return a + b
end
sum = add(5, 2)
#PHP
function add($a, $b){
return $a + $b;
}
$sum = add(5, 2);
//Java
public static int add(int a, int b){
//staticの後のintは戻り値の型を指定、戻り値がないメソッドの場合はvoidを使用
return a + b;
}
int sum = add(5, 2);
//JavaScript
const add = function(a, b){
return a + b;
};
let sum = add(5,2);
//または
const add = (a, b) => {
return a + b;
};
let sum = add(5,2);
//または
function add (a, b){
return a + b;
}
let sum = add(5,2);
jsはバージョンによって推奨されている記述が違います。
クラスとインスタンス作成
さあ、待ちに待ったオブジェクト指向の始まりです!
Menuクラスを作って、そのクラスをもとに、インスタンスを作成し変数menu1に代入しています。
#Ruby
class Menu
##処理
end
menu1 = Menu.new
#PHP
class Menu{
##処理
}
$menu1 = new Menu();
//Java
class Menu{
//処理
}
Menu menu1 = new Menu();
//JavaScript
class Menu{
//処理
}
const menu1 = new Menu();
インスタンス変数、インスタンスフィールド、プロパティの定義
メニューには名前や値段などの"情報"が含まれます。それをクラス内で事前に宣言しておきます。
#Ruby
attr_accessor :name
attr_accessor :price
#PHP
private $name;
private $price;
//Java
private String name;
private int price;
//JavaScript
//事前定義は不要?
初期メソッドでのインスタンス変数、プロパティへの代入
さあ、さらに訳わからないところにやってきました!
初期メソッドとはnewされた時(一番最初)に呼ばれるメソッドになります。
今回はnewの引数に指定された値が初期メソッド内で、インスタンスの情報として変数に入ります。
#Ruby
def initialize(name, price)
self.name = name
self.price = price
end
menu1 = Menu.new("ハンバーガー",300)
#PHP
public function __construct($name,$price){
this->name = $name;
this->price = $price;
}
$menu1 = new Menu("ハンバーガー",300);
//Java
//クラス内でクラスと同名のメソッドを定義する
Menu(String name, int price){
this.name = name;
this.price = price;
}
Menu menu1 = new Menu("ハンバーガー",300)
//JavaScript
constructor (name, price){
this.name = name;
this.price = price;
}
const menu1 = new Menu("ハンバーガー",300)
##インスタンスメソッドと呼び出し
さて最後になります。インスタンスは"情報"の他に"処理"を持っています。
今回はその処理の定義方法と呼び出し方です。
変数menu1にはMenuクラスから作られたインスタンスが代入されているので、
出力は"こちらのハンバーガーは300円です"となります。
#Ruby
def show
puts "こちらの#{self.name}は#{self.price}円です"
end
menu1.show
#PHP
public function show(){
echo "こちらの{$this->name}は{$this->price}円です";
}
$menu1->show();
//Java
public void show(){
System.out.println("こちらの"+this.name+"は"+this.price+"円です");
}
menu1.show();
//JavaScript
show(){
console.log(`こちらの${this.name}は${this.price}円です`);
}
menu1.show();
終わりに
最後までご覧いただきありがとうございました。
抜けや間違いがあるかもしれませんが大目に見てください!!
この世の中では浅く広く学ぶのはあまり良くないとされていますが、知識を深めるために別言語に挑戦してみるのもいいと私は思います。