関数を構成する可能性のある慣用的な方法

thesamet

私は一連の連鎖関数呼び出しを通じて値を構築しています(すべての結果はタイプですB):

val o: Option[String] = ...
val b: B = someFunc()
    .map(func1)
    .map(func2)
    .map(/* want to apply func3 here if o.isDefined)

これで、が定義されている場合にfunc3: (B, String) => Bのみ適用したいものがあります。oその場合は、オプションの値を2番目のパラメーターとして渡します。これは次と同等です。

val tmp: B = someFunc()
    .map(func1)
    .map(func2)
val b = o.fold{b}{v => func3(tmp, v)}

しかし、私はコールチェーンを壊したくありません。これを行うための慣用的な方法はありますか?

ニキータ・ボルコフ

明らかにシンプルだがエレガントではない解決策は次のとおりです。

val b = someFunc().map(func1).map(func2)
  .map( a => if( o.isDefined ) func3( a, v ) else a )

これはあなたが提案したものの少し修正されたバージョンです:

val b = someFunc().map(func1).map(func2)
  .map( a => o.foldLeft( a )( func3 ) )

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascript:変数がif構文で等しくなる可能性のある値のリストを作成する方法

分類Dev

NaNになる可能性のある要素への文字列関数の適用

分類Dev

引数の数が異なる可能性があるC ++の別の関数に関数を渡す

分類Dev

右辺値を使用しない可能性のある関数に渡す

分類Dev

構文-可能性のある関数ポインタ

分類Dev

PostgreSQLで数少ない可能性の1つとなる可能性のあるデータを保存する理想的な方法は?

分類Dev

SQLインジェクションの原因となる可能性のある文字を削除する関数

分類Dev

Python 3のinput()関数を壊す可能性のある特別な入力はありますか?

分類Dev

終了しない可能性のある関数の使用を終了するためのIsabelleコード生成

分類Dev

Python-Noneを返す可能性のある関数から変数を設定するための安全でエレガントな方法

分類Dev

BobJenkinsHash関数の結果が負になる可能性はありますか?

分類Dev

JMS構成クラスで発生する可能性のある奇妙な動作

分類Dev

非移動構成可能フィールドを含むタイプは、どのように移動構成可能である可能性がありますか?

分類Dev

ツリー構造に関数を適用するときにexpectタイプと一致する可能性があります

分類Dev

可能性のある異なるboost :: dimensionでboost :: quantityを保存する方法

分類Dev

コンパイルエラー「この関数または変数は安全でない可能性があります」(strcpy)を修正する方法

分類Dev

関数が異なるタイプである可能性がある場合、モナド規則はどのように適用されますか

分類Dev

その関数の結果を定義する方法は、typescriptで定義されていない可能性があります

分類Dev

Kotlin:複数のブール関数をチェックする慣用的な方法

分類Dev

Haskellの関数間で変数を共有する慣用的な方法は?

分類Dev

clojureで同様の関数定義を枯渇させる慣用的な方法はありますか?

分類Dev

天井関数、床関数、および円形関数は、精度の低下の問題をどの程度深刻に増幅する可能性があり、そのような影響を排除する方法はありますか?

分類Dev

boost :: bind'ed関数を受け入れる可能性のあるc ++関数ポインターを指定する方法

分類Dev

返されたオブジェクトの構築で例外が発生する可能性のある関数「noexcept」にマークを付ける

分類Dev

空になる可能性のあるrxjsの監視可能な応答を処理する方法は?

分類Dev

一般的なアノード構成で、LEDの5 * 5マトリックスを正方形に発光させる可能性はありますか?

分類Dev

関数がExceptionをスローする場合、関数の戻り値の型はExceptionになる可能性があります

分類Dev

未定義のjavascriptである可能性のあるオブジェクトで関数を呼び出す

分類Dev

引数がないのに、なぜvue計算関数がパラメーターの割り当てを破壊する可能性があるのですか?

Related 関連記事

  1. 1

    Javascript:変数がif構文で等しくなる可能性のある値のリストを作成する方法

  2. 2

    NaNになる可能性のある要素への文字列関数の適用

  3. 3

    引数の数が異なる可能性があるC ++の別の関数に関数を渡す

  4. 4

    右辺値を使用しない可能性のある関数に渡す

  5. 5

    構文-可能性のある関数ポインタ

  6. 6

    PostgreSQLで数少ない可能性の1つとなる可能性のあるデータを保存する理想的な方法は?

  7. 7

    SQLインジェクションの原因となる可能性のある文字を削除する関数

  8. 8

    Python 3のinput()関数を壊す可能性のある特別な入力はありますか?

  9. 9

    終了しない可能性のある関数の使用を終了するためのIsabelleコード生成

  10. 10

    Python-Noneを返す可能性のある関数から変数を設定するための安全でエレガントな方法

  11. 11

    BobJenkinsHash関数の結果が負になる可能性はありますか?

  12. 12

    JMS構成クラスで発生する可能性のある奇妙な動作

  13. 13

    非移動構成可能フィールドを含むタイプは、どのように移動構成可能である可能性がありますか?

  14. 14

    ツリー構造に関数を適用するときにexpectタイプと一致する可能性があります

  15. 15

    可能性のある異なるboost :: dimensionでboost :: quantityを保存する方法

  16. 16

    コンパイルエラー「この関数または変数は安全でない可能性があります」(strcpy)を修正する方法

  17. 17

    関数が異なるタイプである可能性がある場合、モナド規則はどのように適用されますか

  18. 18

    その関数の結果を定義する方法は、typescriptで定義されていない可能性があります

  19. 19

    Kotlin:複数のブール関数をチェックする慣用的な方法

  20. 20

    Haskellの関数間で変数を共有する慣用的な方法は?

  21. 21

    clojureで同様の関数定義を枯渇させる慣用的な方法はありますか?

  22. 22

    天井関数、床関数、および円形関数は、精度の低下の問題をどの程度深刻に増幅する可能性があり、そのような影響を排除する方法はありますか?

  23. 23

    boost :: bind'ed関数を受け入れる可能性のあるc ++関数ポインターを指定する方法

  24. 24

    返されたオブジェクトの構築で例外が発生する可能性のある関数「noexcept」にマークを付ける

  25. 25

    空になる可能性のあるrxjsの監視可能な応答を処理する方法は?

  26. 26

    一般的なアノード構成で、LEDの5 * 5マトリックスを正方形に発光させる可能性はありますか?

  27. 27

    関数がExceptionをスローする場合、関数の戻り値の型はExceptionになる可能性があります

  28. 28

    未定義のjavascriptである可能性のあるオブジェクトで関数を呼び出す

  29. 29

    引数がないのに、なぜvue計算関数がパラメーターの割り当てを破壊する可能性があるのですか?

ホットタグ

アーカイブ