Scala: соответствовать и проанализировать целочисленную строку?

Если вы работаете в Mac OS X, вы можете установить пакет ca-cert-bundle с помощью homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

Формула устанавливает пакет сертификатов в вашу общую папку. via:

share.install 'ca-bundle.crt'

Метод share является просто псевдонимом /usr/local/share, а curl-ca-bundle предоставляется в Mozilla. Это то, на что вы видите ссылки во многих вопросах. Надеюсь, что это поможет, поскольку не совсем понятно, как подойти к этому на Mac OS X. brew install curl тоже не принесет вам много пользы, так как это только бочонок и не будет связан (работает which curl всегда будет выводить /usr/bin/curl, что по умолчанию поставляется с вашей ОС). Этот пост также может иметь некоторую ценность .

Вам, конечно, нужно будет отключить SSL перед установкой homebrew, так как это git-репо. Просто делайте то, что говорит curl, когда происходит ошибка во время проверки SSL, и:

$ echo insecure >> ~/.curlrc

Как только вы установите homebrew вместе с curl-ca-bundle, удалите .curlrc и попробуйте клонировать репо на github. Убедитесь, что ошибок нет, и вам будет хорошо.

ПРИМЕЧАНИЕ: Если вы прибегаете к .curlrc, удалите его из системы, как только вы закончите тестирование. Этот файл может вызвать серьезные проблемы, поэтому используйте его во временных целях и с осторожностью. brew doctor будет жаловаться, если вы забудете удалить его из своей системы).

ПРИМЕЧАНИЕ: Если вы обновите свою версию git, вам нужно будет повторно запустить эту команду, так как настройки вашей системы будут стерты (они сохраняются относительно двоичного файла git в зависимости от версии). [тысячу сто сорок одна]

Итак, после запуска:

$ brew update
$ brew upgrade

Если вы получите новую версию git, просто перезапустите:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

И все будет готово.

Наконец, если у вас есть новая версия git, выполните:

$ git config -l --system

должно выдать вам ошибку в соответствии с

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

это ваша совет, который нужно указать git, где находится пакет Mozilla.

ОБНОВЛЕНИЕ:

.curlrc может или не может быть решением вашей проблемы. В любом случае, просто установите пакет Mozilla, установленный на вашем компьютере, независимо от того, нужно ли вам загружать его вручную или нет. Вот что здесь важно. Как только вы получите пакет, вы готовы. Просто запустите команду git config и укажите git на пакет ca.

ОБНОВЛЕНИЕ

Мне недавно пришлось добавить:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt в мой файл точек .zshenv, так как я использую zsh. опция git config работала в большинстве случаев, но при использовании github по SSL (например, rvm get stable) я все еще сталкивался с проблемами сертификатов. @Maverick указал на это в своем комментарии, но на тот случай, если кто-то пропустит это или предположит, что ему не обязательно экспортировать эту переменную среды в дополнение к выполнению команды git config --system..... Спасибо и надеюсь, что это поможет.

ОБНОВЛЕНИЕ

Похоже, что curl-ca-bundle был недавно удален из доморощенного . Здесь есть рекомендация .

Вы хотите добавить некоторые файлы в:

$(brew --prefix)/etc/openssl/certs

24
задан Landon Kuhn 2 July 2009 в 17:28
поделиться

2 ответа

Определите экстрактор

object Int {
  def unapply(s : String) : Option[Int] = try {
    Some(s.toInt)
  } catch {
    case _ : java.lang.NumberFormatException => None
  }
}

Ваш примерный метод

def getValue(s: String): Int = s match {
  case "inf" => Integer.MAX_VALUE 
  case Int(x) => x
  case _ => error("not a number")
}

И используя его

scala> getValue("4")
res5: Int = 4

scala> getValue("inf")
res6: Int = 2147483647

scala> getValue("helloworld")
java.lang.RuntimeException: not a number
at scala.Predef$.error(Predef.scala:76)
at .getValue(<console>:8)
at .<init>(<console>:7)
at .<clinit>(<console>)
at RequestResult$.<init>(<console>:4)
at RequestResult$.<clinit>(<console>)
at RequestResult$result(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Na...
41
ответ дан 28 November 2019 в 22:36
поделиться
def getValue(s: String): Int = s match {
    case "inf" => Integer.MAX_VALUE 
    case _ => s.toInt
}


println(getValue("3"))
println(getValue("inf"))
try {
    println(getValue("x"))
}
catch {
    case e => println("got exception", e)
    // throws a java.lang.NumberFormatException which seems appropriate
}
1
ответ дан 28 November 2019 в 22:36
поделиться
Другие вопросы по тегам:

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