はじめに
Javaを少しだけ学習した身で、
rubyの繰り返し処理をみると、
英語が多く、(・・)??? となりましたが、
謎が解けたので記録します。
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n|
sum += n
end
puts sum
結論
do ... end は ブロックの役割
仮にJavaScriptを見てみましょう
sum += numbers[i]
が { }
で囲まれています。({ } = ブロックです)
var numbers = [1, 2, 3, 4]
var sum = 0
for (var i = 0; i < numbers.length; i++){
sum += numbers[i]
}
console.log(sum)
JavaScriptの { } と do end は同じ役割
|n| sum += n
がdo...end
に囲まれています
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n|
sum += n
end
puts sum
|n| sum += n
は{...}
で囲んでも使えます◎
ひとやすみ 🍵
こうみると、rubyはeachメソッドが優秀かもですが、
最近のJavaScriptはforEachメソッドが使え、rubyと同じくらい簡単に書けます。
const numbers = [1, 2, 3, 4]
let sum = 0
numbers.forEach(function(n){ sum += n })
console.log(sum)
javaで、配列をfor文で取り出す処理は、
下記がスタンダードなのだろうかと思いつつ、サンプルで書きました…
public class Practice {
public static void main(String[] args) {
String[] strArray = { "t", "a", "m", "u", "r", "a" };
for (int i = 0; i < strArray.length; i++) {
System.out.print(strArray[i] + " ");
}
System.out.println();
}
}
ps : javaにもforEachメソッドが存在しましたが、
java.util.ArrayList;と java.util.List;をimportして使う・・・👀
ネストfor文、拡張for文、forEachメソッド・・・配列と繰り返し処理、使い所とか気になりました
疑問はありつつ、記事は終盤へ
ちなみに、「do...end 」は改行しなくても使えます💡
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n| sum += n end
puts sum
JavaScriptもJavaも、改行しなくても使えます◎
javaは下記でも実行できます!(要スクロール)
public class Practice {public static void main(String[] args) {String[] strArray = {"t", "a", "m", "u", "r", "a"};for (int i = 0; i < strArray.length; i++) {System.out.print(strArray[i] + " ");}System.out.println();}}
なぜだ・・・
rubyとJavascriptを見ていると、{ }を区切りに、改行する必要があるんだろうな〜
ブロックの偉大さ・・・
スコープとブロックの違いも気になりつつ
違う視点で見ると、javaはclassを使うことが基本な言語なんだなと思ったり・・・
最後に、Pythonをかじったことのある私は気になりました。インデントがブロックだと改行は必須だよね…
結論、Pythonはインデントがブロックになっているので改行は必須です
言語によって違うブロックの書き方
- Java JavaScript : 波カッコ
- Python : インデント
- Ruby : キーワード・波カッコ
まるで 個性豊かなカラフル な世界だと感じたエンジニア見習いでした!
参考
プロを目指す人のためのRuby入門
(記述足りなかったらすみません)
無断でネットや書籍の内容を丸写しするのはやめよう
技術書を書きたいITエンジニア必見!?「プロを目指す人のためのRuby入門」の舞台裏