Ruby()と[]の違いが分かりません助けて欲しいです
解決済
回答 4
投稿
- 評価
- クリップ 2
- VIEW 624
[]と()の中で実行できる数値を入れたいです。
()と[]のどちらを使うことが一般的ですか?使い分ける場合、この2つの違いはなんですか?
初心者なもので何が一番いい回答なのか分からないです。
a = (1..3)
puts a
b = (1,2,3)
puts b
c = [1..3]
puts c
d = [1,2,3]
puts d
上記のコードを実行してみると、bの部分でのエラーですべて表示されませんでした。なのでb部分を消して実行してみたところa,c,dが実行され以下が出てきました。
1..3
1..3
1
2
3
dのレスポンスが私のしたかった命令です。
ただ、eachでこれらを使うと
a.each do |number|
puts(number)
end
c.each do |numb|
puts(numb)
end
d.each do |num|
puts(num)
end
1
2
3
1..3
1
2
3
と、aとdはきちんと実行できました。
これってつまり、dの[1,2,3]で配列した方がどちらの場合でも間違いはないってことですよね?
それかaの(1..3)の方法を使うのもいいでしょうか?
どうか心優しいかた、教えてください。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+1
これってつまり、dの[1,2,3]で配列した方がどちらの場合でも間違いはないってことですよね?
何をしたいかによって、適切な形は変わってきます。
a
…1..3
という範囲を表現するRange
オブジェクト(外側のカッコは無意味)b
…文法的に成立せずc
…a
を配列に入れたものd
…数値3つの入った配列
Range
オブジェクトはeach
すると、範囲内の値を順に生成していきます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
0
回答その2
n = 100
while (n /= 2; n > 0)
p n
end
こんな感じです。(n /= 2; n > 0)
は n /= 2
した上で、n > 0
の値を返し、true
の間、p n
を実行し続けます。これが「一括り」の意味です。
ちなみに、;
は、改行の代わりなので、
n = 100
while (n /= 2
n > 0)
p n
end
としても同じです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
()
は、式を一括りにします。1, 2, 3
は多重代入する場合以外には文法として誤りなので、b = (1, 2, 3)
はエラーになるのです。
多重代入は、b = 1, 2, 3
のようにします。
そうすると、b = [1, 2, 3]
と同じになります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
実は、Rubyの場合、いろいろ難しいんですよね。
puts (1)
の括弧と、puts(1)
の括弧は意味が違うとか、[]
は実はメソッド名だとか。
大まかに言うと、
()
・式の優先順位を示す。メソッドの直後でない限りこちらです。
・・・例:(1+2)*3
・メソッドの引数を示す。メソッドの直後だとこちらです。
・・・例:puts(1,2,3)
。ただし、puts (1,2,3)
は直後じゃ無いので上記の意味になりエラー
[]
・Array
の表記に使う。オブジェクトの後でない場合。
・・・例:[1,2,3,[x,y]]
・オブジェクトの後ならメソッドの一種なので、クラスによって意味が違う。
・・・例:"ABC"[1]
ENV["PATH"]
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2019/02/05 20:07
1..3はRangeオブジェクトだから
```
(1..3).each do |number|
puts number
end
```
みたいに(1..3)からも始まれるeachがあるんですね!!