Обновить
1

Пользователь

Отправить сообщение

Scala:


import scala.util.matching.Regex
import scala.util.matching.Regex.Groups

def calc(s: String): Unit = {
  new Regex("""\s*([-+]?\d+)\s*([-+*/])\s*([-+]?\d+)\s*""")
    .findFirstMatchIn(s)
    .map {
      case Groups(a, op, b) => (a.toDouble, op, b.toDouble)
    }
    .map {
      case (a, "*", b) => a * b
      case (a, "/", b) => a / b
      case (a, "+", b) => a + b
      case (a, "-", b) => a - b
    }
    .foreach(println)
}

Примеры несколько странные, можно же написать проще, вместо:


{
    s1 :
    {
        ip: “192.168.10.1”
    }
    s2 :
    {
        ip: “192.168.10.1”
    }
    s3 :
    {
        ip: “192.168.10.1”
    }
}

писать:


s1.ip = “192.168.10.1”
s2.ip = “192.168.10.1”
s3.ip = “192.168.10.1”

и это будет тоже HOCON.


Добавлю, что важный недостаток (а иногда и нет) HOCON — это наличие include, но отсутствие require. Если конфиг, указанный по пути include не найден, он будет проигнорирован без каких-либо предупреждений. Так что будьте осторожнее.

Когда я писал сервисы с использованием Node.JS, через некоторое время осознал, что DI уже встроен в Node.JS. Посудите сами:

1. Нужно на момент запуска приложения решить, какую реализацию выбрать? Не проблема — делаем proxy js'ник, который вернет нужную реализацию, например, на основе конфига.
2. Нужно покрыть модуль юнит-тестами? Не проблема — мокаем с помощью proxyquire.

require по своей природе является Service Locator.
2

Информация

В рейтинге
7 565-й
Зарегистрирован
Активность