Rubyの構文?言語仕様?

Rubyの以下コードについて質問です。 #!/ruby/bin/ruby print "content-type: ...

notnot さんからの 回答

質問者が選んだベストアンサー

  • 2011/10/02 23:32
  • 回答No.1
  • ベストアンサー
notnot

ベストアンサー率 48% (4420/9120)

単項演算子の+と見なされるためです。
a = +3
みたいな。

構文としては、
print value.to_s +"の時"+ x.to_s + "<br />"
が、
print value.to_s( (+"の時")+ x.to_s + "<br />")
のように解釈されています。

メソッド呼び出しの括弧を省略できるRubyでは、曖昧な構文の時に空白をみて解釈を決めています。
print value.to_s + "の時"+ x.to_s + "<br />"
print value.to_s+"の時"+x.to_s+"<br />"
print value.to_s() +"の時"+ x.to_s() + "<br />"
ならOK。

下記のどちらかに書法ルールを統一していれば普通は大丈夫です。
・二項演算子の前後に必ず空白を入れない
・二項演算子の前後に必ず空白を入れる
お礼コメント
1000vicki

お礼率 17% (40/226)

ありがとうございます!
理解できました。
悩んでいたのでたすかりました。
投稿日時:2011/10/03 20:00
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • Ruby net/httpについて Ruby

    Rubyで#!/ruby/bin/ruby require 'net/http' require 'uri' print "content-type: text/html\r\n\r\n"; begin url = "http://~~~.com/" Net::HTTP.get_print URI.parse(url) rescue => ex print ex.class; print "<hr />"; print ex.message; print "<hr />"; print ex.backtrace; end というようなコードで指定のURLの内容をgetしたいと思っています。 が、とりあえずは上記内容でURL先の内容は取得できるのですが url = "http://www.~~~.com"; という風にwwwをつけるとスクリプトがうごかずURL先の内容が取得できないのです。 原因はなんなのでしょうか? 識者のかたご教授ください。...

  • Ruby 自作メソッドのブロック付きメソッドについ Ruby

    いつも、ご教授ありがとうございます。 Ruby でメソッドを自作してそのメソッドにブロックを持たせる場合 ブロック内で返り値を返すためにはどうしたらいいのでしょうか? たとえば以下のような自作メソッドがあるとすると def blocktest(str) if (block_given?) yield str else print "メソッドにブロックが与えられていない"; end end begin #自作したメソッドにブロックを与えた場合 res = blocktest("ブロック付きメソッドのテスト") {|value| print value; print "<br/>" print "メソッドに与えられた引数をprintしています" return "ブロックで返り値" } print res; print "<hr />" #ブロックを与えない場合 blocktest("ブロック付きメソッドのテスト"); rescue => ex print ex.message end 上記のようにブロック内で返り値 を指定して変数resのその返り値を返したい場合 どうしたらいいのでしょうか? 一応、ブロック内でreturnで値を与えてはいますが、例外が発生します。 よろしくお願いしまう。...

  • 無駄な改行を何とかしたいです Perl

    perl cgiでまだまだわからないことだらけなので、まだ質問します・・・ print $q->start_html(-title=>"画面", -BGCOLOR=>'#ffffff'), $q->header(-charset=>"Shift_JIS"),# Content-type: text/htmlを書き出します $q->p('<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#ff00ff">'), $q->p('<FONT COLOR="red">aaa</FONT>'), $q->hr, $q->p('<form method="post" action="ppp.cgi">'), $q->p('<FONT color="blue">【a】</FONT>'), $q->p('<INPUT TYPE="text" NAME="mmm" VALUE="" SIZE="25" MAXLENGTH="25">'), $q->p('<FONT color="blue">【b】</FONT>'), $q->p('<INPUT TYPE="text" NAME="nnn" VALUE="" SIZE="25" MAXLENGTH="25">' $q->p('<FONT color="blue">【c】</FONT>'), $q->p('<INPUT TYPE="text" NAME="ttt" VALUE="" SIZE="25" MAXLENGTH="25">' $q->p('<FONT color="blue">【d】</FONT>' $q->p('<select name="question" size="1" multiple="multiple">' $q->p('<option selected="selected" value="aaa">aaa?</option>'), $q->p('<option selected="selected" value="bbb">bbb</option>'), $q->p('<option selected="selected" value="ccc">ccc</option>'), $q->p('</select>'), $q->p('<FONT color="blue">【e】</FONT>'), $q->p('<INPUT TYPE="text" NAME="ans" VALUE="" SIZE="25" MAXLENGTH="25">'), $q->p('<FONT color="blue">【f】</FONT>'), $q->p('<textarea name="freeans" rows="5" cols="30" value="$initText" wrap="hard">$initText</textarea>'), #$q->p('<textarea name="freeans" rows="5" cols="30" value=$initText wrap="hard">あいうえお </textarea>'), $q->p('<input type=submit value="送信">'), $q->p('</form>'),# 送信データここまで $q->end_html; としているのですが、表示のほうが 【a】 テキストボックス入力欄 【b】 テキストボックス入力欄 【c】 テキストボックス入力欄 ・・・ と、テキストボックス入力欄の上下に改行が入っていしまいます。 消す方法はございますか?pタグがダメなんでしょうか? それとContent-Type: text/html; charset=Shift_JIS が最上部に表示されてしまいます。        $q->header(-charset=>"Shift_JIS"),# Content-type: text/htmlを書き出します の行が原因だということはわかるのですが・・・・変更方法がわからないです。 教えて頂きたいです。よろしくお願いします。...

  • 伝言掲示板の作成(超初心者です) CGI

    授業の課題で伝言掲示板を作るのですが 行き詰ってるので助けてください。 ファイル名write.htmlで <html> <body> 掲示板プログラム<br> 書き込み内容を指定してください <form action="write.cgi"> <input type="text" name="contents"> <input type="submit"> </form> </body> </html> write.cgiで #!/usr/bin/perl print "Content-type: text/html\n\n"; use CGI qw(:standard); $value = param("contents") ; open(OUT,">contents.txt"); print OUT $value; close(OUT) ; print "<html><body>"; print "書き込みが終了しました"; print "</body></html>"; read.cgiで #!/usr/bin/perl print "Content-type: text/html\n\n"; open(IN,"contents.txt"); $value = <IN>; close(IN); print "<html><body>"; print $value; print "</body></html>" 空のテキストファイルcontents.txtを作成しました。 これで伝言掲示板はできますよね?? では前の書き込みが消えないようにするにはどうした良いですか? あと、装飾したい場合はwrite.htmlにタグを利用して書けばよいのですか?? わかりにくい書き込みですみません。...

  • Perl 書き込み行の順番、読み込み Perl

    #!/usr/bin/perl require "cgi-lib.pl"; print "Content-type: text/html\n\n"; ############ 書き込み ############# $file = "sample.txt"; print qq! <font size="1">コード入力<form method=POST action="./houkoku.cgi"> <input type="text" name="rank"> <br><br> <input type="submit" value="送信"> </form>!; use CGI; $query = CGI->new; $rank = $query->param('rank'); open( WRITE, ">> $file" ); print WRITE"$rank\n"; close ( WRITE ); ############ 読み込み ############# print "<table border=1>"; open( READ, "<$file" ); $adam = <READ>; while( $adam = <READ> ) { chomp ( $adam ); @column = split(",",$adam); print "<tr><td>@column[0]</td></tr>"; } close(READ); __END__ のようにして、送信されたものを表示していくようにしたいのですが、 新しい書き込みが下段に追加されてい行きます。 新しいものを上段へ表示したいのですが、 どのようにしたら良いでしょうか? sample.txtにも、新しいものが下に記入されています。 上段への書き込みのやりかたをご教授いただけたらと思います。、 よろしくお願いします。...

ページ先頭へ