2015-05-25 6 views
0

Новое для Scala и только что началось. Однако этот код вызывает ошибку в консоли sbt.Незаконный старт простого выражения: тип опции и эллипсис

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ... 

Ошибка

error: illegal start of simple expression

вверх-стрелка указывает на многоточие в. Исправление кажется простым, но как новичок, он в настоящее время ускользает от меня

+1

'= ...' не является допустимым объявлением функции. Либо вы реализуете тело функции, которое вы используете '???', чтобы сделать его еще не реализованным (компилируется, но исключает исключение во время выполнения). – cchantep

+0

Спасибо. '???' сделал трюк. Кроме того, после более тщательного просмотра примеров, автор не посещал некоторые из кода для запуска. – user3465296

ответ

2

... не является допустимым выражением Scala. Если вы хотите функцию с «неизвестной» реализации вы можете использовать ???:

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ??? 

Цель этой функции, по-видимому, чтобы взять функцию в качестве параметра и применять либо none или some в зависимости от содержания варианта , Вы можете реализовать его с помощью сопоставления с образцом:

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = o match { 
    case Some(a) => some(a) 
    case None => none 
} 
+0

Или используя существующий '.fold':' o.fold (none) (some) '. btw, я бы написал 'A => B' вместо' => A => B'. – cchantep

Смежные вопросы