2017-03-01 17 views
0

私はWhy's Poignant Guideを通過しています。最初の行に「必要」なぜ私は理解していない方法ではなく、変数である:それはより一般的に他の言語の関数と呼ばれているものを、Rubyのメッセージが送信呼び出すのでなぜこの例では変数ではなくメソッドが必要ですか?

require 'net/http' 
Net::HTTP.start('www.ruby-lang.org', 80) do |http| 
    print(http.get('/en/about/license.txt').body) 
end 
+0

私はそれがdownvoteに値するとは思わない。 – sawa

答えて

1

。この特定の「関数」は、名前「net/http」によって参照されるコードの外部部分をロードします。時には、括弧などの構文要素が構文上の便宜のために省略されているため、他の関数やRubyメッセージの送信とまったく同じに見えないことがあります。

理由はです。なぜなら、意匠の意思を理解する前にかなりの数の構文パターンを学習する必要があるからです。この設計意図を理解すると、なぜこの構文が選択されたのかという答えが得られます。また、Rubyの設計に関するディスカッションを研究することもできます。

+0

どうやって自分のような初心者がその結論に来るだろうか?何が関数を呼び出すのですか? –

+0

あなたは読書を続けなければなりません。それらのことは、あなたが学ぶにつれて明らかになります。 –

+1

これは、関数の呼び出しではなく*です。 Rubyには機能がありません。メッセージ送信です。 –

0

ローカル変数のスコープはかなり狭いです。式がローカル変数とメソッドのあいだで曖昧な場合、現在のメソッド本体、クラス本体、ブロックなどを調べ、ローカル変数割り当てを見つけることができない場合は、メソッドとして解釈されます。

0

引数をとるためです。 Rubyでは、メッセージ送信者だけが引数を持ちます。

1

変数とスペースで区切られた文字列リテラルからなる言語構文が存在しないため、変数にすることはできません。

Ergo、これはメソッド呼び出し(メッセージ送信)でなければなりません。

関連する問題