这段代码在scala中的作用究竟是什么?

时间:2011-03-02 20:37:20

标签: scala programming-languages

我正在尝试了解twitter gizzard示例rowz,我无法弄清楚scala中这个小片段的作用:

package com.twitter.rowz
import com.twitter.gizzard.nameserver.{Forwarding, NameServer}
import com.twitter.gizzard.shards.ShardException

class ForwardingManager(nameServer: NameServer[Shard]) extends (Long => Shard) {  
    def apply(id: Long) = nameServer.findCurrentForwarding(0, id)
}

课程到底延伸到什么程度?

2 个答案:

答案 0 :(得分:6)

(A=>B)Function1[A,B]

这些行严格等同:

class ForwardingManager(nameServer: NameServer[Shard]) extends (Long => Shard)
class ForwardingManager(nameServer: NameServer[Shard]) extends Function1[Long,Shard]

答案 1 :(得分:1)

此代码段定义扩展ForwardingManager的{​​{1}}类Function1[Long, Shard]只是简短形式。

作为另一个例子,您可以从Scala库中查看Long => Shard类:

https://github.com/scala/scala/blob/master/src/library/scala/util/parsing/combinator/Parsers.scala#L190

在这种情况下,Parser(Input => ParseResult[T])相同。 Programming in Scala, 2nd Edition(第33.6节)

中也描述了这个具体的例子