質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

196閲覧

ruby pop後の配列を表示する方法が分かりません

DrqYuto

総合スコア432

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/12/08 12:20

puts [*1..3].pop #=>3

となりますが,1,2が欲しい場合がリファレンス見てもよく分かりません。
https://ref.xaio.jp/ruby/classes/array/pop

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ruby

1a = [*1..3] #=> [1,2,3]

として、aから[1,2]を得たい、ということでしょうか。

素朴には、a.popした後のaが求めるものですね。

ruby

1a = [*1..3] 2a.pop 3p a.pop #=> [1, 2]

aを破壊したくない場合には、b = a.dupしてからb.popを実行すればよいです。

ruby

1a = [*1..3] 2b = a.dup 3b.pop 4p b #=> [1, 2]

aだけでなんとかしたい場合は、a[-1]3(配列の最後の要素)になることを利用して、Rangeを使うこともできます。

ruby

1a = [*1..3] 2a[0...-1] #=> [1, 2]

1..10(ピリオド2つ)は1から10までですが、1...10(ピリオド3つ)は1から9までになるのを利用しています。
..を使う場合は、-1ではなく-2を使います。-1よりもさらに1つ分マイナス、です。

ruby

1a = [*1..3] 2a[0..-2] #=> [1, 2]

ちなみにRubyのリファレンスマニュアルの最新版は https://docs.ruby-lang.org/ja/latest/doc/index.html です。Array#popについては https://docs.ruby-lang.org/ja/latest/method/Array/i/pop.html をどうぞ。

投稿2018/12/08 12:48

takahashim

総合スコア1877

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DrqYuto

2018/12/08 12:51

a = [*1..3] a[0...-1] #=> [1, 2] 未満になるのをすっかり忘れていました。ありがとうございます。
guest

0

slice(0,n-1)

を使えば良さそうな感じがしてきました。
http://shuzo-kino.hateblo.jp/entry/2013/11/17/131904
https://ref.xaio.jp/ruby/classes/string/slice

投稿2018/12/08 12:30

DrqYuto

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問