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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

2589閲覧

Ruby 文字列の結合 +と式展開の違い

dongw

総合スコア119

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/03/28 03:54

https://github.com/cookpad/styleguide/blob/master/ruby.ja.md

cookpadの規約にあるのですが、

[SHOULD] 文字列リテラルに対して String#+ を用いて他の文字列を連結してはならない。式展開を使用すること。

この文字列結合時に式展開を利用する理由とは何でしょうか?
処理速度向上など何か理由があっての規約でしょうか?

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

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

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

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

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

guest

回答2

0

「bad」として例示されている記法の中には、特に悪いと思えないようなものも存在しているが、その理由はコードの一貫性を保つためである。

と書いてあります。ですから理由としては「コードの一貫性を保つため」となろうかと思います。

そして、なぜ式展開を使用することが選ばれたのかは、maisumakun さんのおっしゃることが理由だろうと推測されますが、これに明確に答えられるのはクックパッド社だけであろうと思います。

投稿2017/03/28 05:19

Zuishin

総合スコア28656

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

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

dongw

2017/03/28 05:24

回答ありがとうございます。 規約として一貫性を保つために採用している、ということですね。 ここに何故?と思うのはちょっと時間のムダかもわかりませんね。
guest

0

ベストアンサー

はい、オブジェクトの生成個数が違ってきます。

リテラル文字列からの連結にすると、「文字列リテラル」と「完成形の文字列」の2つのオブジェクトが生成されますが、変数展開すれば結果しか生成されないので効率的です。

投稿2017/03/28 04:11

maisumakun

総合スコア145121

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

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

dongw

2017/03/28 04:39

回答ありがとうございます。 moge = "あ" hoge = "い" の2つの変数が存在する場合は moge + hoge と "#{moge}#{hoge}" のどちらとも結果しか生成されないと思うのですがこの場合はどうなるのでしょうか?
maisumakun

2017/03/28 05:20

だから、「文字列リテラルに対して」なのです。両者が変数の場合は対象外です。
dongw

2017/03/28 05:25

失礼しました。 文字列リテラルのときだけ対象なのですね。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問