Я снова запутался в синтаксисе Scala.Я ожидал, что это будет работать нормально:
// VERSION 1
def isInteractionKnown(service: Service, serviceId: String) = service match {
case TwitterService =>
twitterInteractions.findUuidByTweetId(serviceId.toLong)
case FacebookService =>
facebookInteractions.findUuidByServiceId(serviceId)
}.isDefined
ПРИМЕЧАНИЕ : оба значения findUuidByTweetId
и findUuidByServiceId
возвращают Option[UUID]
scalac
и говорит мне:
error: ';' expected but '.' found.
}.isDefined
Когда я позволяю своей IDE (IDEA) переформатировать код, часть .isDefined
заканчивается на собственной строке.Это как если бы match
не было выражением.Но, на мой взгляд, то, что я сделал, было функционально эквивалентно:
// VERSION 2
def isInteractionKnown(service: Service, serviceId: String) = {
val a = service match {
case TwitterService =>
twitterInteractions.findUuidByTweetId(serviceId.toLong)
case FacebookService =>
facebookInteractions.findUuidByServiceId(serviceId)
}
a.isDefined
}
, который анализирует и делает именно то, что я хочу.Почему первый синтаксис не принят?