以下の内容はhttps://wrongwrong163377.hatenablog.com/entry/2018/12/29/003000より取得しました。


【Kotlin】通常ではfor文で回せないものをfor文っぽく扱う

Kotlinでは、浮動少数やBigIntegerなどはそのままだとfor文に入れて回すことができません。
こういったものはgenerateSequenceを使ってシーケンスにすることで、for文のように回すことができます。

やり方

以下はgenerateSequenceを使って階乗を実装したものです。
generateSequence{ }内の処理が値の更新と終了条件の判定です。takeIf { }内が終了条件です。

fun fact(n: BigInteger): BigInteger{
    var i = n
    var ans = BigInteger.ONE
    generateSequence { (i--).takeIf { i > BigInteger.ZERO } }.forEach {
        ans *= it
    }
    return ans
}

注釈

あくまで「のように」であって、sequence関連は奥深く、多くの使い道があります。
qiita.com




以上の内容はhttps://wrongwrong163377.hatenablog.com/entry/2018/12/29/003000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14