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 のまずいコード 25 本Advent Calendar 2021

Day 15

【Ruby のまずいコード】文字列の先頭から n 文字を取得する

Last updated at Posted at 2021-12-14

お題

ローカル変数 str に文字列が代入されているとして,先頭から高々 10 文字までを puts で表示してください。
「高々 10 文字」というのは,str が 10 文字に満たないときはすべて表示する,という意味です。

次に,高々 n 文字までを同様に表示してください(n は正の整数とする)。

話を簡単にするため str は改行を含まないと仮定します。

コード

puts str[0..9]
puts str[0..(n - 1)]

改善

10 文字表示させたいのに,配列式の終端に 10 ではなく 9 を指定しなければならない,というのは混乱の元ですね。
変数で与えたときも余計な計算式が必要になって面倒です。
こういう書き方はバグを誘う悪い習慣です。

あるいは .. の代わりに ... を使って

puts str[0...10]
puts str[0...n]

と書くこともできますが,もっと素直なのは

puts str[0, 10]
puts str[0, n]

でしょう。
String に対する [ ] で,引数1として整数を二個与えたときは,第一引数が開始インデックス,第二引数が長さです。

String#[] は多様な使い方ができるメソッドなので,ぜひリンク先の公式リファレンスをご覧ください。

  1. [ ] はメソッドであり,その中に書くのはこのメソッドに対する実引数です。

0
0
0

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?