0
0

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 1 year has passed since last update.

rubyのdo...endについて

Last updated at Posted at 2023-04-23

はじめに

Javaを少しだけ学習した身で、
rubyの繰り返し処理をみると、
英語が多く、(・・)???  となりましたが、
謎が解けたので記録します。

rubyの基本の繰り返し処理表記
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n|
    sum += n
end
puts sum

結論

do ... end は ブロックの役割

仮にJavaScriptを見てみましょう
sum += numbers[i]{ } で囲まれています。({ } = ブロックです)

sample.js
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 += ndo...endに囲まれています

sample.rb
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n|
    sum += n
end
puts sum

|n| sum += n{...}で囲んでも使えます◎


ひとやすみ 🍵


こうみると、rubyはeachメソッドが優秀かもですが、
最近のJavaScriptはforEachメソッドが使え、rubyと同じくらい簡単に書けます。

sample.js
const numbers = [1, 2, 3, 4]
let sum = 0
numbers.forEach(function(n){ sum += n })
console.log(sum)

javaで、配列をfor文で取り出す処理は、

下記がスタンダードなのだろうかと思いつつ、サンプルで書きました…

sample.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();
	}
}

ps : javaにもforEachメソッドが存在しましたが、
java.util.ArrayList;と java.util.List;をimportして使う・・・👀
ネストfor文、拡張for文、forEachメソッド・・・配列と繰り返し処理、使い所とか気になりました

疑問はありつつ、記事は終盤へ

ちなみに、「do...end 」は改行しなくても使えます💡

sample.rb
numbers = [1, 2, 3, 4]
sum = 0
numbers.each do |n| sum += n end
puts sum

JavaScriptもJavaも、改行しなくても使えます◎

javaは下記でも実行できます!(要スクロール)

sample.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入門
(記述足りなかったらすみません:sob:)
無断でネットや書籍の内容を丸写しするのはやめよう
技術書を書きたいITエンジニア必見!?「プロを目指す人のためのRuby入門」の舞台裏

0
0
4

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?