3

Databinder Dispatchを使用して Json でコーディングする例では、Nathan はメソッドなしでオブジェクト (Http) を使用します。

import dispatch._
import Http._
Http("http://www.fox.com/dollhouse/" >>> System.out )

彼はこれをどのように行っていますか?

残念ながら、私は十分に具体的ではありませんでした...

クラスまたはコンパニオン オブジェクト Http のコンストラクターに引数を渡すだけのようです。

別の例では、別のフォームを見てきました。

http = new Http
http(/* argument here */)

これは有効な Scala ですか? 著者は Scala の専門家なので、そうに違いないと思います。しかし、それは私には意味がありません。通常、アクションは object.doSomething() として明示的に、または object = something として暗黙的に (シンタックス シュガーの下で apply() メソッドを使用して) オブジェクトのメソッドを呼び出すことによって実行されます。

私が考えることができるのは、コンストラクターがオブジェクトの構築に加えて何かをするために使用されているということだけです。言い換えれば、この場合はオフになり、Web 上で何かを行うなどの副作用があります。

4

3 に答える 3

6

オブジェクトで呼び出されるメソッドを定義することで機能しapplyます。そのようなメソッドが存在する場合、引数はオブジェクト自体に適用できます。これは、内部的に引数がapplyメソッドに渡されることを意味します。

于 2010-03-21T00:31:20.813 に答える
3

私は別のフォームを見てきました:

val http = new Http
http(/* argument here */)

これは有効な Scala ですか? 著者は Scala の専門家なので、そうに違いないと思います。しかし、それは私には意味がありません。

最初の行では、Http クラスのコンストラクターが呼び出され、新しいインスタンスが作成されます。Java と何も変わらない。2 行目では、Http クラスの apply メソッドがそのインスタンスで呼び出されます(/* argument here */)。これは明らかに Scala 固有のものです。

objectクラスにメソッドとのコンパニオンがある場合、混乱が生じる可能性がありますapply。その場合 (apply メソッドがコンパニオン クラスのコンストラクターを呼び出すだけであると仮定すると)、newキーワードなしで新しいインスタンスを作成できます。

val http = Http()

新しいインスタンスを作成します。これは非常に一般的なパターンですが、コンパニオン オブジェクトの apply メソッドは何でも実行でき、シグネチャも持つことができます。

于 2010-03-21T04:29:52.620 に答える
3

オブジェクトにメソッドがある場合、オブジェクトをapplyメソッドであるかのように "呼び出す" ことができます (実際には適用メソッドを呼び出します)。

于 2010-03-21T00:31:46.993 に答える