代码之家  ›  专栏  ›  技术社区  ›  Svish

http(/*这里的参数*/)如果没有显式或隐式方法,这个对象(http)是如何使用的?

  •  3
  • Svish  · 技术社区  · 16 年前

    在使用Json编码的示例中 Databinder Dispatch

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

    在另一个例子中,我看到了另一种形式:

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

    这是有效的Scala吗?我想一定是,因为作者是Scala专家。但这对我来说毫无意义。操作通常是通过调用对象上的方法来执行的,无论是显式地作为object.doSomething()还是隐式地作为object=something(使用语法框架下的apply()方法)。

    我所能想到的是,除了构造对象之外,构造函数还被用来做一些事情。换言之,这是有副作用,例如在这种情况下,去了网上做一些事情。

    3 回复  |  直到 12 年前
        1
  •  3
  •   Randall Schulz    16 年前

    我看到了另一种形式:

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

    这是有效的Scala吗?我想一定是的 是的,因为作者是斯卡拉

    (/* argument here */) . 这显然是Scala特有的东西。

    当班上有同伴的时候,可能会有些混乱 object 带着一个 apply 方法。在这种情况下(假设apply方法只调用伴随类的construtor),可以在没有 new

    val http = Http()
    

    创建新实例。这是一种极为常见的模式,尽管伴随对象apply方法可以执行任何操作并具有任何签名。

        2
  •  6
  •   Fabian Steeg    16 年前

    它通过定义一个名为 apply 应用 方法。

        3
  •  3
  •   sepp2k    16 年前

    apply 方法,您可以“调用”对象,就好像它是一个方法一样(实际上它将调用其apply方法)。

    推荐文章