概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| Woolpack API
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

## woolpack.fn
クラス FnUtils

    java.lang.Object
      woolpack.fn.FnUtils

    public final class FnUtils

extends java.lang.Object

インタープリタ デザインパターンの基本部品のユーティリティです。

作成者:
  nakamura

フィールドの概要
`static Fn<java.lang.Class,java.lang.Class,java.lang.RuntimeException>` | `TO_WRAPPER` プリミティブ型をオブジェクト型に変換する`Fn`です。

メソッドの概要
`static
`<R> Fn<java.lang.Object,R,java.lang.RuntimeException>`
` | `castTo(java.lang.Class<R> clazz)` `Class.cast(Object)`を使用してキャストする関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Delegator<C,R,E>`
` | `delegate()` 委譲するだけの関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Delegator<C,R,E>`
` | `delegate(Fn<? super C,? extends R,? extends E> fn)` 委譲するだけの関数を生成します。
`static
`<C> Fn<C,C,java.lang.RuntimeException>`
` | `echo()` 引数をそのまま返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `exec(Fn<? super C,? extends Fn<? super C,? extends R,? extends E>,? extends E> fn)` 限定的な汎関数を処理する関数を生成します。
`static
`<C,R> Fn<C,R,java.lang.RuntimeException>`
` | `fix(R value)` 固定値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `fixThrows(R value)` 固定値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `ifElse(java.util.Map<? extends Fn<? super C,?,? extends E>,R> map, Fn<? super C,? extends R,? extends E> defaultFn)` `Map`を使用して、はじめて委譲先が`Boolean.TRUE`になった値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `ifElse(java.util.Map<? extends Fn<? super C,?,? extends E>,R> map, R defaultValue)` `Map`を使用して、はじめて委譲先が`Boolean.TRUE`になった値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `ifTrue(Fn<? super C,?,? extends E> ifFn, Fn<? super C,? extends R,? extends E> trueFn, Fn<? super C,? extends R,? extends E> falseFn)` 評価結果により委譲先を分岐する関数を生成します。
`static
`<A,B,C,E extends java.lang.Exception> Fn<A,C,E>`
` | `join(Fn<? super A,? extends B,? extends E> fn0, Fn<? super B,? extends C,? extends E> fn1)` ふたつの関数を合成した関数を生成します。
`static
`<A,B,C,D,E extends java.lang.Exception> Fn<A,D,E>`
` | `join(Fn<? super A,? extends B,? extends E> fn0, Fn<? super B,? extends C,? extends E> fn1, Fn<? super C,? extends D,? extends E> fn2)` 関数を合成した関数を生成します。
`static
`<A,B,C,D,E,T extends java.lang.Exception> Fn<A,E,T>`
` | `join(Fn<? super A,? extends B,? extends T> fn0, Fn<? super B,? extends C,? extends T> fn1, Fn<? super C,? extends D,? extends T> fn2, Fn<? super D,? extends E,? extends T> fn3)` 関数を合成した関数を生成します。
`static
`<A,B,C,D,E,F,T extends java.lang.Exception> Fn<A,F,T>`
` | `join(Fn<? super A,? extends B,? extends T> fn0, Fn<? super B,? extends C,? extends T> fn1, Fn<? super C,? extends D,? extends T> fn2, Fn<? super D,? extends E,? extends T> fn3, Fn<? super E,? extends F,? extends T> fn4)` 関数を合成した関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `maybe(Fn<? super C,? extends R,? extends E> fn)` 引数がnullの場合は委譲をスキップしてnullを返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `recode(Fn<? super C,? extends R,? extends E> fn, java.util.Collection<? super C> contextList, java.util.Collection<? super R> returnList)` 通過情報を`Collection`に記録するテスト用の関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `recode(Fn<? super C,? extends R,? extends E> fn, java.lang.String name, java.util.Collection<java.lang.String> nameList)` 通過情報を`Collection`に記録するテスト用の関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `recode(Fn<? super C,? extends R,? extends E> fn, java.lang.String name, java.util.Collection<java.lang.String> nameList, java.util.Collection<? super C> contextList, java.util.Collection<? super R> returnList)` 通過情報を`Collection`に記録するテスト用の関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `seq(java.lang.Iterable<? extends Fn<? super C,? extends R,? extends E>> iterable)` 委譲先を順次実行し、最後に実行した結果を返す関数を生成します。
`static
`<C,R> SwitchFn<C,R,java.lang.RuntimeException>`
` | `switching(java.util.Map<? super C,? extends R> map)` `Map`を使用して、キーに対する値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> SwitchFn<C,R,E>`
` | `switching(java.util.Map<? super C,? extends R> map, Fn<? super C,? extends R,? extends E> defaultFn)` `Map`を使用して、キーに対する値を返す関数を生成します。
`static
`<C,R> SwitchFn<C,R,java.lang.RuntimeException>`
` | `switching(java.util.Map<? super C,? extends R> map, R defaultValue)` `Map`を使用して、キーに対する値を返す関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `throwing(E exception)` 例外を投げる関数を生成します。
`static
`<C,R,E extends java.lang.Exception> Fn<C,R,E>`
` | `trying(Fn<? super C,? extends R,? extends java.lang.Exception> fn, Fn<? super java.lang.Exception,? extends R,? extends E> reportFn, Fn<? super C,?,? extends E> finallyFn)` Java の try-catch-finally のそれぞれのブロックで委譲する関数を生成します。

クラス java.lang.Object から継承されたメソッド
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

フィールドの詳細

### TO_WRAPPER

    public static final Fn<java.lang.Class,java.lang.Class,java.lang.RuntimeException> TO_WRAPPER

  プリミティブ型をオブジェクト型に変換する`Fn`です。

メソッドの詳細

### castTo

    public static <R> Fn<java.lang.Object,R,java.lang.RuntimeException> castTo(java.lang.Class<R> clazz)

  `Class.cast(Object)`を使用してキャストする関数を生成します。

  型パラメータ:
    `R` -
  パラメータ:
    `clazz` - キャストする型。
  戻り値:
    関数。
  関連項目:
    `CastFn`

### exec

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> exec(Fn<? super C,? extends Fn<? super C,? extends R,? extends E>,? extends E> fn)

  限定的な汎関数を処理する関数を生成します。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。
  戻り値:
    関数。
  関連項目:
    `ExecFn`

### echo

    public static <C> Fn<C,C,java.lang.RuntimeException> echo()

  引数をそのまま返す関数を生成します。
  適用しているデザインパターン：Null Object。

  型パラメータ:
    `C` -
  戻り値:
    関数。
  関連項目:
    `EchoFn`

### fixThrows

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> fixThrows(R value)

  固定値を返す関数を生成します。
  適用しているデザインパターン：Null Object。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `value` - 返却する値。
  戻り値:
    関数。
  関連項目:
    `FixFn`

### fix

    public static <C,R> Fn<C,R,java.lang.RuntimeException> fix(R value)

  固定値を返す関数を生成します。
  適用しているデザインパターン：Null Object。

  型パラメータ:
    `C` -
    `R` -
  パラメータ:
    `value` - 返却する値。
  戻り値:
    関数。
  関連項目:
    `FixFn`

### ifTrue

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> ifTrue(Fn<? super C,?,? extends E> ifFn,
                                                                       Fn<? super C,? extends R,? extends E> trueFn,
                                                                       Fn<? super C,? extends R,? extends E> falseFn)

  評価結果により委譲先を分岐する関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `ifFn` - 評価用の委譲先。
    `trueFn` - 評価結果が`Boolean.TRUE`の場合の委譲先。
    `falseFn` - 評価結果が`Boolean.TRUE`でない場合の委譲先。
  戻り値:
    関数。
  関連項目:
    `IfFn`

### join

    public static <A,B,C,E extends java.lang.Exception> Fn<A,C,E> join(Fn<? super A,? extends B,? extends E> fn0,
                                                                       Fn<? super B,? extends C,? extends E> fn1)

  ふたつの関数を合成した関数を生成します。 最初の委譲先の返却値を引数してに次の委譲先を実行しその結果を返します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `A` -
    `B` -
    `C` -
    `E` -
  パラメータ:
    `fn0` - 最初の委譲先。
    `fn1` - ふたつめの委譲先。
  戻り値:
    関数。
  関連項目:
    `JoinFn`

### join

    public static <A,B,C,D,E extends java.lang.Exception> Fn<A,D,E> join(Fn<? super A,? extends B,? extends E> fn0,
                                                                         Fn<? super B,? extends C,? extends E> fn1,
                                                                         Fn<? super C,? extends D,? extends E> fn2)

  関数を合成した関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `A` -
    `B` -
    `C` -
    `D` -
    `E` -
  パラメータ:
    `fn0` -
    `fn1` -
    `fn2` -
  戻り値:
    関数。
  関連項目:
    `join(Fn, Fn)`

### join

    public static <A,B,C,D,E,T extends java.lang.Exception> Fn<A,E,T> join(Fn<? super A,? extends B,? extends T> fn0,
                                                                           Fn<? super B,? extends C,? extends T> fn1,
                                                                           Fn<? super C,? extends D,? extends T> fn2,
                                                                           Fn<? super D,? extends E,? extends T> fn3)

  関数を合成した関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `A` -
    `B` -
    `C` -
    `D` -
    `E` -
    `T` -
  パラメータ:
    `fn0` -
    `fn1` -
    `fn2` -
    `fn3` -
  戻り値:
    関数。
  関連項目:
    `join(Fn, Fn)`

### join

    public static <A,B,C,D,E,F,T extends java.lang.Exception> Fn<A,F,T> join(Fn<? super A,? extends B,? extends T> fn0,
                                                                             Fn<? super B,? extends C,? extends T> fn1,
                                                                             Fn<? super C,? extends D,? extends T> fn2,
                                                                             Fn<? super D,? extends E,? extends T> fn3,
                                                                             Fn<? super E,? extends F,? extends T> fn4)

  関数を合成した関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `A` -
    `B` -
    `C` -
    `D` -
    `E` -
    `F` -
    `T` -
  パラメータ:
    `fn0` -
    `fn1` -
    `fn2` -
    `fn3` -
    `fn4` -
  戻り値:
    関数。
  関連項目:
    `join(Fn, Fn)`

### recode

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> recode(Fn<? super C,? extends R,? extends E> fn,
                                                                       java.lang.String name,
                                                                       java.util.Collection<java.lang.String> nameList,
                                                                       java.util.Collection<? super C> contextList,
                                                                       java.util.Collection<? super R> returnList)

  通過情報を`Collection`に記録するテスト用の関数を生成します。
  適用しているデザインパターン：Proxy。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。null の場合は委譲しません。
    `name` - nameListに追加する名前。
    `nameList` - name を追加する対象。null の場合は追加しません。
    `contextList` - コンテキスト役を追加する対象。null の場合は追加しません。
    `returnList` - 委譲先を追加する対象。null の場合は追加しません。
  戻り値:
    関数。
  関連項目:
    `RecodeFn`

### recode

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> recode(Fn<? super C,? extends R,? extends E> fn,
                                                                       java.lang.String name,
                                                                       java.util.Collection<java.lang.String> nameList)

  通過情報を`Collection`に記録するテスト用の関数を生成します。
  適用しているデザインパターン：Proxy。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。null の場合は委譲しません。
    `name` - nameListに追加する名前。
    `nameList` - name を追加する対象。null の場合は追加しません。
  戻り値:
    関数。
  関連項目:
    `recode(Fn, String, Collection, Collection, Collection)`

### recode

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> recode(Fn<? super C,? extends R,? extends E> fn,
                                                                       java.util.Collection<? super C> contextList,
                                                                       java.util.Collection<? super R> returnList)

  通過情報を`Collection`に記録するテスト用の関数を生成します。
  適用しているデザインパターン：Proxy。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。null の場合は委譲しません。
    `contextList` - コンテキスト役を追加する対象。null の場合は追加しません。
    `returnList` - 委譲先を追加する対象。null の場合は追加しません。
  戻り値:
    関数。
  関連項目:
    `recode(Fn, String, Collection, Collection, Collection)`

### seq

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> seq(java.lang.Iterable<? extends Fn<? super C,? extends R,? extends E>> iterable)

  委譲先を順次実行し、最後に実行した結果を返す関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `iterable` - 委譲先の一覧。
  戻り値:
    関数。
  関連項目:
    `SeqFn`

### switching

    public static <C,R,E extends java.lang.Exception> SwitchFn<C,R,E> switching(java.util.Map<? super C,? extends R> map,
                                                                                Fn<? super C,? extends R,? extends E> defaultFn)

  `Map`を使用して、キーに対する値を返す関数を生成します。 引数に対する値が null の場合はデフォルトの処理に委譲します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `map` - マップ。
    `defaultFn` - 引数に対応する値が null の場合の委譲先。
  戻り値:
    関数。

### switching

    public static <C,R> SwitchFn<C,R,java.lang.RuntimeException> switching(java.util.Map<? super C,? extends R> map,
                                                                           R defaultValue)

  `Map`を使用して、キーに対する値を返す関数を生成します。 引数に対する値が null の場合はデフォルトの処理に委譲します。
  適用しているデザインパターン：`Map`のAdapter。

  型パラメータ:
    `C` -
    `R` -
  パラメータ:
    `map` - マップ。
    `defaultValue` - 引数に対応する値が null の場合の値。
  戻り値:
    関数。
  関連項目:
    `switching(Map, Fn)`

### switching

    public static <C,R> SwitchFn<C,R,java.lang.RuntimeException> switching(java.util.Map<? super C,? extends R> map)

  `Map`を使用して、キーに対する値を返す関数を生成します。 引数に対する値が null の場合はデフォルトの処理に委譲します。 引数に対応する値が null の場合はnullを返します。
  適用しているデザインパターン：`Map`のAdapter。

  型パラメータ:
    `C` -
    `R` -
  パラメータ:
    `map` - マップ。
  戻り値:
    関数。
  関連項目:
    `switching(Map, Fn)`

### throwing

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> throwing(E exception)

  例外を投げる関数を生成します。
  適用しているデザインパターン：Null Object。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `exception` - 投げる例外。
  戻り値:
    関数。
  関連項目:
    `ThrowFn`

### trying

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> trying(Fn<? super C,? extends R,? extends java.lang.Exception> fn,
                                                                       Fn<? super java.lang.Exception,? extends R,? extends E> reportFn,
                                                                       Fn<? super C,?,? extends E> finallyFn)

  Java の try-catch-finally のそれぞれのブロックで委譲する関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - try ブロックにおける委譲先。
    `reportFn` - catch ブロックにおける委譲先。
    `finallyFn` - finally ブロックにおける委譲先。
  戻り値:
    関数。
  関連項目:
    `TryFn`

### delegate

    public static <C,R,E extends java.lang.Exception> Delegator<C,R,E> delegate(Fn<? super C,? extends R,? extends E> fn)

  委譲するだけの関数を生成します。
  適用しているデザインパターン：初期化と委譲先決定とコンテキスト役決定のタイミングを分離するCurrying(3層)。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。
  戻り値:
    関数。

### delegate

    public static <C,R,E extends java.lang.Exception> Delegator<C,R,E> delegate()

  委譲するだけの関数を生成します。
  適用しているデザインパターン：初期化と委譲先決定とコンテキスト役決定のタイミングを分離するCurrying(3層)。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  戻り値:
    委譲先。

### maybe

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> maybe(Fn<? super C,? extends R,? extends E> fn)

  引数がnullの場合は委譲をスキップしてnullを返す関数を生成します。
  適用しているデザインパターン：Balking。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `fn` - 委譲先。
  戻り値:
    委譲先。
  関連項目:
    `MaybeFn`

### ifElse

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> ifElse(java.util.Map<? extends Fn<? super C,?,? extends E>,R> map,
                                                                       Fn<? super C,? extends R,? extends E> defaultFn)

  `Map`を使用して、はじめて委譲先が`Boolean.TRUE`になった値を返す関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `map` - マップ。
    `defaultFn` - マップの全てのキーに対して委譲結果が`Boolean.TRUE`でない場合の委譲先。
  戻り値:
    関数。
  関連項目:
    `ifElse(Map, Fn)`

### ifElse

    public static <C,R,E extends java.lang.Exception> Fn<C,R,E> ifElse(java.util.Map<? extends Fn<? super C,?,? extends E>,R> map,
                                                                       R defaultValue)

  `Map`を使用して、はじめて委譲先が`Boolean.TRUE`になった値を返す関数を生成します。
  適用しているデザインパターン：`Fn`のComposite。

  型パラメータ:
    `C` -
    `R` -
    `E` -
  パラメータ:
    `map` - マップ。
    `defaultValue` - マップの全てのキーに対して委譲結果が`Boolean.TRUE`でない場合の返却値。
  戻り値:
    関数。
  関連項目:
    `ifElse(Map, Fn)`

概要 | パッケージ | クラス | 使用 | 階層ツリー | 非推奨 API | 索引 | ヘルプ
| Woolpack API
前のクラス 次のクラス | フレームあり フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド

Copyright (C) 2006-2007 Takahiro Nakamura. All rights reserved.