Если вы посмотрите на сигнатуру метода getOrElse в признаке Option[A]
:
final def getOrElse[B >: A](default: => B): B
, он развернет Option
, чтобы вернуть A
или его супертип до [ 116].
Теперь, с modelOpt и Option[Future[Result]]
, применение getOrElse
с заданным значением по умолчанию типа Future[Result]
(или его подтипа) приведет к Future[Result]
.
Аналогично тому, как работает getOrElse
, но при сохранении Option
на месте метод или Else имеет следующую подпись:
final def orElse[B >: A](alternative: => Option[B]): Option[B]
Таким образом, применяя orElse
к modelOpt, как показано ниже вернет искомую Option[Future[Result]]
:
modelOpt.orElse(Some(Future.successful(InternalServerError)))
Обратите внимание, что Future.successful используется для обеспечения уже завершенного Будущего с указанным результатом.
Это - сложный вопрос для ответа, потому что в конечном счете он зависит от того, что.NET 3,5 функции Вы используете. Если Вы будете пользоваться некоторыми новыми библиотеками, такими как LINQ, то да, необходимо будет установить эти 3,5 времени выполнения. Однако, если Вы просто используете часть нового синтетического сахара, представленного в 3,5, Вы не можете. Причина этого состоит в том, что.NET 3.5 на 100% совместима с 2,0 CLR.
Если это - клиентское приложение, которое не использует asp.net и т.д., Вы можете использовать установку.Net Client Profile, которая намного меньше (c. 26 МБ) - более подробная информация в:
http://blogs.msdn.com/bclteam/archive/2008/05/21/net-framework-client-profile-justin-van-patten.aspx
http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramework.aspx
Если Вы ссылаетесь на 3.5 определенных libaries, такие как Система. Ядро или Система. Xml. Linq затем необходимо будет поставляться 3.5.
существует некоторый différence в сгенерированной части кода наборов данных между 3,5 SP1 и 3.5 (никакой SP), что-то о сериализации. можно испытать затруднения из-за этого при обновлении установки на 3.5SP1, даже в базовой функциональности.
.NET 3.5 не на литературные 100% совместима с.NET 2.0, но с.NET 2,0 SP1.
Но я не знаю, даст ли это Вам какие-либо проблемы..NET 2,0 обновления SP1, как говорят, сделаны сделать Дополнительные Методы и возможно Автоматические Свойства доступными (не помнят специфических особенностей).
У Scott Hanselman есть хорошее сообщение в блоге на этом.
Что касается размера.NET 3,5 развертываемых файла - то, что это-.NET 2.0, 3.0 и 3.5 для x86, x64 и другая 64-разрядная архитектура в одном большом файле.