Rubyで複数行の文字列連結をするときに[+]を前に置くとエラーになるんですけど理由が分かりません。



moji = 'abc'
+ 'def'


undefined method `+@' for "def":String (NoMethodError)


http://d.hatena.ne.jp/afternoontea/20070715

回答の条件
  • 1人2回まで
  • 登録:2007/07/15 19:05:30
  • 終了:2007/07/15 20:39:26

ベストアンサー

id:wnagata No.1

wnagata回答回数170ベストアンサー獲得回数182007/07/15 19:14:44

ポイント100pt

+ 'def'

という式を実行しようとして、エラーになっています。

式が複数行にまたがる場合は、以下のように行末に\をつけます。

moji = 'abc' \

+ 'def'

http://www.ruby-lang.org/ja/

id:afternoontea

分かりました。

後ろに[+]があるときは勝手に次の行も読んでくれるけど、

改行で終わってるときは明示的に次の行があるってことを示さなきゃダメなんですね。

2007/07/15 20:37:32
  • id:Bookmarker
    Ruby では、式と式の間はセミコロン(;)または改行で区切ります。

    Rubyリファレンスマニュアル - プログラム:
    http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0

    ですから、示された式は
    -変数 moji への文字列'abc'の代入式
    -文字列'def'の+単項演算子式
    の2つの式と解釈されますが、文字列(String クラス)には+単項演算子は定義されていないので、エラーになっています。

    こういう場合、wnagata さんが書かれているように、改行の前にバックスラッシュを付けて区切りを抑制するか、演算子を行末に書く必要があります。
    >||
    moji = 'abc' +
    'def'
    ||<

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません