Scala — Компоненты повседневных инструментов

Введение

Разработка в основном основана на scala, некоторые общие компоненты инструмента записываются и время от времени постоянно обновляются...

2. Компоненты ежедневного инструмента

1. Повторяющиеся символы

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

  def repeatString(char: String, n: Int): String = List.fill(n)(char).mkString

использовать:

    println(repeatString("=", 100))
====================================================================================================

2. Форматировать числа

Для представления и отображения данных двойная спецификация имеет формат знака процента и десятичной точки x.

import java.text.DecimalFormat
  
  def formatRatio(ratio: Double): String = {
    val decimalFormatter = new DecimalFormat("0.000%")
    val formatted_num = decimalFormatter.format(ratio)
    formatted_num
  }

использовать:

    val num = 0.034879347834726
    val forMatNum = formatRatio(num)
    println(forMatNum)
3.488%

3.Редис Хмсет

При использовании Jedis для выполнения redis.hmset обнаруживается, что scala.collection.mutable.HashMap[String, String] и java.util.Map[String, String] недоступны, переключите java.uitl.HashMap на обычное использование.

      val map = new util.HashMap[String, String]()
      redis.hmset(saveKey, map)
  def toLog(args: String*): String = {
    args.toArray.mkString("\t")
  }

4. Прокрутите даты

Для выполнения задачи нужно одновременно обработать несколько дней данных и получить результаты.Можно сначала получить все dts в коде, а потом отдельно обрабатывать финальную сводку.

  def traverseDate(): Unit = {
    val dateTimeFormat = DateTimeFormatter.ofPattern("yyyyMMdd")

    val st = "20210101"
    val end = "20210315"
    var now = st
    val allDateTime = new ArrayBuffer[String]()

    while (now.toInt <= end.toInt) {
      allDateTime.append(now)
      now = LocalDate.parse(now, dateTimeFormat).plusDays(1).format(dateTimeFormat)
    }

    allDateTime.foreach(println)
  }

5. Бревно переменной длины

При выводе лога задачи часто встречается ситуация переменной длины, хлопотнее использовать StringBuilder или StringBuffer, и его нужно постоянно дописывать, это легко решается с помощью scala-параметров переменной длины, т.е. очень прост в использовании.

  def toLog(args: String*): String = {
    args.toArray.mkString("\t")
  }
    println(toLog("A", "B", "C", "D"))
    println(toLog("A", "B", "C", "D", "E", "F"))

6. Быстрая попытка поймать

Традиционный try-catch для Scala очень сложен в написании. Для некоторых простых сценариев, таких как получение и преобразование функций, он не должен быть таким сложным. Просто представьте scala.util.Попробуйте быстро попробовать catch.

  def tryCatch(): Unit = {
    val numStr = "NULL"

    val num = try {
      numStr.toInt
    } catch {
      case e: Exception => {
        e.printStackTrace()
        0L
      }
    }
    println(num)

Быстрая попытка поймать:

   val quickNum = Try(numStr.toInt).getOrElse(0)
   println(quickNum)

рекомендация

отblog.csdn.net/BIT_666/article/details/124099853