Rubyのsliceについて
いろいろと実行してみました!
sliceの意味
sliceの英単語を調べてみると
以下のような意味になります!
- 一切れ
- 部分
- 薄く切る
sliceを使ってみよう
こんな配列を用意します。
配列の順番は0はじまりです。
0番目:0
1番目:2
2番目:4
3番目:6
4番目:8
5番目 : 10
それではsliceを実行してみましょう!
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(0)
p even_array.slice(1)
p even_array.slice(2)
p even_array.slice(3)
p even_array.slice(4)
p even_array.slice(5)
p even_array
# result
0
2
4
6
8
10
[0, 2, 4, 6, 8, 10]
引数にマイナスを入れて実行してみよう!
マイナスは後ろから数えます。
-1番目 : 10
-2番目 : 8
-3番目 : 6
-4番目 : 4
-5番目 : 2
-6番目 : 0
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(-1)
p even_array.slice(-2)
p even_array.slice(-3)
p even_array.slice(-4)
p even_array.slice(-5)
p even_array.slice(-6)
p even_array
# result
10
8
6
4
2
0
[0, 2, 4, 6, 8, 10]
引数に0を入れるとどうなるの?
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(-0)
p even_array.slice(0)
p even_array.slice(+0)
p even_array
# result
0
0
0
[0, 2, 4, 6, 8, 10]
0だとマイナスゼロでも、ゼロでも、プラスゼロでも、
先頭の値を取ってくるという結果になりました!
(x..y)と範囲を指定して実行してみよう!(..)
ピリオド2つの範囲指定で実行すると、
以下の結果になります!
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(0..1)
p even_array.slice(1..2)
p even_array.slice(2..3)
p even_array.slice(3..4)
p even_array.slice(4..5)
# result
[0, 2]
[2, 4]
[4, 6]
[6, 8]
[8, 10]
(x…y)と範囲を指定して実行してみよう!(…)
ピリオド3つの範囲指定で実行すると、
以下の結果になります!
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(0...2)
p even_array.slice(1...3)
p even_array.slice(2...4)
p even_array.slice(3...5)
p even_array.slice(4...6)
p even_array.slice(5...7)
# result
[0, 2]
[2, 4]
[4, 6]
[6, 8]
[8, 10]
[10]
ピリオド2つだと、指定した右側の数字は、含みます。
ピリオド3つだと、指定した右側の数字は、含みません。
無理やり、交際として覚えることにします。
(謎の論理だな・・・・・・・論理崩壊しているぞ!)
ピリオド2つ
1..2は、ピリオドが2つ。左と右の数も2つ。
「ピリオドの数2つ」と「左と右の数が2つ」
一致しています!
1と2は付き合うことができます。
結ばれました!
含まれる!
ピリオド3つ
1…3は、ピリオドが3つ。左と右の数は2つ。
「ピリオドが3つ」「左と右の数は2つ」
一致しませんでした!
ピリオドが3つということで、三角関係。
三角関係ということは、誰かがうまくいきません…
結ばれない!
含まれない!
(無理やりすぎるだろ!)
まぁ何が言いたいかというと、
覚えるのであれば何か
自分なりにストーリーを作って
覚えておきましょう!
引数に英語やかなを入れるとどうなるの?
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice("あ")
# result
`slice': no implicit conversion of String into Integer (TypeError)
even_array = [0, 2, 4, 6, 8, 10]
p even_array.slice(あ)
# result
undefined local variable or method `あ' for main:Object (NameError)
RubySilverに挑戦した
Ruby Silverに挑戦したお話はこちらからどうぞ。
コメント