Что именно делает этот фрагмент в Scala? - PullRequest
2 голосов
/ 02 марта 2011

Я пытаюсь понять пример строки gizzard в твиттере и не могу понять, что делает этот маленький фрагмент в 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 ]

6 голосов
/ 02 марта 2011

(A=>B) - это Function1[A,B]

Эти строки строго эквивалентны:

class ForwardingManager(nameServer: NameServer[Shard]) extends (Long => Shard)
class ForwardingManager(nameServer: NameServer[Shard]) extends Function1[Long,Shard]
1 голос
/ 02 марта 2011

Этот фрагмент определяет класс ForwardingManager, который расширяет Function1[Long, Shard] (Long => Shard - это просто краткая форма).

В качестве другого примера вы можете посмотреть на класс Parser из библиотеки Scala:

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

В этом случае (Input => ParseResult[T]) совпадает с Function1[Input, ParseResult[T]].Этот конкретный пример описан также в Программирование в Scala, 2-е издание (раздел 33.6)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...