Scala-日常のツールコンポーネント

I.はじめに

開発は主にscalaに基づいており、いくつかの一般的なツールコンポーネントが記録されており、それらは時々継続的に更新されます...

2.毎日のツールコンポーネント

1.繰り返し文字

指定された文字数について、正規化されたログを印刷するときに使用されます。

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

使用する:

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

2.数値をフォーマットします

データのレポートと表示の場合、doubleの指定はパーセント記号と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.Redis Hmset

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.日付をループします

タスクを実行するには、複数日のデータを同時に処理して結果を取得する必要があります。最初にコード内のすべてのデータを取得してから、最終的な要約を個別に処理できます。

  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.クイックトライキャッチ

Scalaの従来のtrycatchの記述は非常に複雑です。機能の取得や変換などの単純なシナリオでは、それほど複雑にする必要はありません。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