2017-11-28 20 views
0

次のScalaコードスニペットのJavaに相当するものは何ですか?Scalaコードスニペット - Java 8に相当するものは何ですか?

val codeLength = 8 
val value: Long = 12345678 
("0" * codeLength + value.toString).takeRight(codeLength) 

3番目の行は、Java 8に相当するものが何であるかを知ることに特に関心があります。

+3

あなたはこのコードが何をするかを説明している場合、あなたは、Javaを知っているがない人からの助けを得ることができるようになりますScala – Eran

+0

@ Eranを知っていますが、私はそのコード行が具体的に何をしているのかよく分かりませんでしたが、TOTP Authコードを生成するために使用されるコードの大きな部分の一部です。この1行では、何をしているのか分からなかった。 –

答えて

5

ゼロフィラー

String.format("%08d", value) 

で心が長い以上8桁はあなたがオーバーフローを取得する必要があります。

+0

あなたの答えは、私が実際にJava 8に相当する点で必要なものを私に与えると思います。 'value'私は8桁を超えることはないと信じているので、オーバーフローは起こりません。 –

+2

in Scala、 'f" $ value%08d "' –

2
  • "0" * codeLengthは、互いに8つのゼロを追加します。
  • その後、value.toStringが8個のゼロに付加されます。
  • .takeRight(codeLength)は、結果のStringから最後のcodeLength(この場合は - 8)文字を使用します。 value.toStringです。

だから、私は、Java同等のは、単にだろうと推測する:

String result = "12345678"; 
+0

最後の8つのtakeRight。 –

+0

ああ、もちろん。ありがとう:) –

+0

Scalaのコードでは、 'value'は変数であり、' '12345678" 'にハードコーディングされていません(私はそれを述べているはずです!)。あなたの説明では、 'value'が' codeLength'よりも短い場合、そのコード行を使って値をゼロで埋めることが明らかになっています。 –