1

私はシナトラを見て、構文を理解しようとしていました:

require 'sinatra'

get '/' do
  "Hello, World!"
end

私はそれがこれを行うことを理解しています:

これが「ルート」です。ここでは、Sinatra に、ホームまたはルートの URL '/' が要求された場合、通常の GET HTTP メソッドを使用して「Hello, World!」を表示するように伝えています。</p>

しかし、Ruby 言語では何が起こっているのでしょうか?

  1. この構文の意味: get '/'? getメソッドと ' /' はそのパラメータですか? メソッドであれば、Ruby では としてメソッドを呼び出すことができますmethodname (parameter) {}。何{ }のためにあるのですか?
  2. 私は通常、機能体へのエンクロージャの一種であるdoendを理解しています。{ }
  3. との間doend「Hello, World!」があります。それは声明ですか?私が言いたいのは、それは印刷されつつあるということですが、私たちはそれを と呼んでいなかったprint "Hello, World!"ので、何が起こっているのでしょうか?
  4. Sinatra で定義されたメソッドのようgetですが、メソッドが既に定義されている場所に gem を追加すると、getそれが呼び出す「get」メソッドをどのように知ることができますか? それともHTTPgetメソッドのことですか?

この質問が非常に基本的なように聞こえる場合は申し訳ありませんが、先に進む前にそれを解決したいと思います.

4

2 に答える 2

1

sinatraかなり特殊なライブラリーのような大きな問題に取り組む前に、ruby のチュートリアルを読むことをお勧めします。

始めるのに適した場所は、Ruby Koans です。

あなたの質問について。

  1. get方法です。'/'はその引数です。とdo ... end同じようにルビでブロックを示し{}ます。
  2. do ... endええ、それは何ですか
  3. Ruby のブロックは、デフォルトで計算された最後の値を返すため、文字列を持つことは を持つことと同じreturn "String"です。
  4. 名前空間の競合が発生した場合、Ruby は文句を言います。この場合getは、sinatra定義済みのメソッドgetです。抽象的にはHTTP GET、サーバーに対するリクエストを表します。
于 2012-10-08T17:24:23.070 に答える
0

「完璧な」回答については、Alan Harris と Konstantin Haase による本「Sinatra Up and Running」をご覧になることをお勧めします。

http://shop.oreilly.com/product/0636920019664.do

6 ページと 7 ページでは、「get '/' do」という行が実際にはメソッド呼び出しであることが説明されています。

そして、この 2 ページを Google プレビューで表示できます。

于 2012-10-09T10:03:38.620 に答える