HTTP(/ *参数这里* /)如何(HTTP)是没有明确的或隐含的方法使用该对象?

StackOverflow https://stackoverflow.com/questions/2485298

在使用 DataBinder的调度使用JSON编码的例子森使用未经方法的对象(HTTP),如下所示:

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

如何做呢?

感谢您对所有的答案不幸的是我还不够具体...

看上去好像是被简单地传递参数到类或伴侣的构造对象的HTTP。

在另一示例中,我看到另一种形式:

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

这是有效的Scala呢?我想这一定是,因为作者是斯卡拉专家。但它是没有意义的我。操作通常通过调用方法的对象,是否明确地作为object.doSomething()或隐式地对象=东西(使用下面的语法糖的应用()方法)进行。

所有我能想到的是,一个构造函数被用来做除了构造一个对象的东西。换句话说,它具有副作用,如在这种情况下会关闭,做一些在网络上。

有帮助吗?

解决方案

  

我看到另一种形式:

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

这是有效的Scala呢?我猜一定   是的,因为作者是斯卡拉   专家。但它是没有意义的我。

在第一行中,HTTP类的构造函数被调用,以创建新的实例。没有什么比在Java中的不同。在第二行中,HTTP类的应用方法被调用与(/* argument here */)该实例。这显然是一个特定的Scala-的事情。

有可能一些混乱当类具有带有object方法伴侣apply。在这种情况下(假设适用方法只是调用伴侣类的construtor),可以在没有new关键字来创建新实例:

val http = Http()

创建新实例。这是一种极为常见的图案,虽然伴随对象应用的方法可以做任何事情,并具有任何签名。

其他提示

它的工作原理通过定义调用的对象上apply方法。如果这样的方法存在时,参数可以被应用到对象本身 - 这意味着在内部的参数被传递给apply方法

如果一个对象具有一方法apply,可以“调用”的对象,如果它是一个方法(其将实际调用其应用方法)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top