Поддержка библиотеки черты NotNull Scala

Мой классический ASP ржав, но:

Response.Write "<table>" & vbCrlf
Response.Write "<tr>" &vbCrLf
Response.Write "<tdclass=""someClass"">" & someVariable & "</td>" & vbCrLf 
Response.Write "</tr>" & vbCrLf 
Response.Write "</table>" & vbCrLf

это выполняется как есть. Это, однако:

<table>
  <tr>
     <td class="someClass"><%= someVariable %></td>
  </tr>
</table>

результаты в:

Response.Write"<table>\r\n<tr>\r\n<td class="someClass">"
Response.Write someVariable
Response.Write "</td>\r\n</tr>\r\n</table>"

, Где \r\n является vbCrLf

Так технически, второй более быстр. ОДНАКО различие было бы измерено в единственных миллисекундах, таким образом, я не буду волноваться об этом. Я был бы более обеспокоен, что лучший в значительной степени неудобен в сопровождении (особенно разработчиком UI HTML), где, поскольку второй тривиален для поддержания.

опоры @Euro Micelli - обслуживание является ключом (который является также, почему языки как Ruby, Python, и в прошлом (tho все еще....) C# и Java ударили торец по C, C++ и блоку - люди могли поддержать код, который является путем, более важным, чем бритье некоторых мс от загрузки страницы.

, Конечно, C/C++ и т.д. имеет их место...., но это не он.:)

14
задан Elazar Leibovich 28 January 2014 в 05:35
поделиться

1 ответ

I на самом деле не знаю, в чем дело с NotNull , но у меня складывается впечатление, что Scala еще не полностью разработала, как она хочет работать с концепциями NotNull / Nullable. Моя собственная политика - никогда не использовать null в Scala, и если вы вызываете Java API, который может возвращать null, немедленно преобразуйте его в Option .

Этот служебный метод - мой лучший друг:

def ?[A <: AnyRef](nullable: A): Option[A] = if (nullable eq null) None else Some(nullable)

Затем вы делаете что-то вроде этого:

val foo: Option[Foo] = ?(getFooFromJavaAPIThatMightReturnNull())

Я считаю это намного проще, чем пытаться отследить, что может быть, а что нет.

Так что я вообще не ответил на ваш вопрос, но я согласен на всякий случай ...

Обновление : более поздние версии Scala теперь поддерживают это в стандартном API:

val foo: Option[Foo] = Option(getFooFromJavaAPIThatMightReturnNull())
10
ответ дан 1 December 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: