サーチ…


備考

タイプセーフなビルダーは、言語機能ではなくコンセプトので、厳密に形式化されていません。

タイプセーフなビルダーの典型的な構造

単一のビルダー機能は、通常3つのステップで構成されます。

  1. オブジェクトを作成します。
  2. ラムダを実行してオブジェクトを初期化します。
  3. 構造化するオブジェクトを追加するか返す。

Kotlinライブラリの型保証されたビルダー

タイプセーフなビルダーのコンセプトは、Kotlinのライブラリやフレームワークで広く使われています。

  • アンコ
  • わさび
  • Ktor
  • 仕様

型安全なツリー構造ビルダ

ビルダーは、受信者を引数とするラムダ式を取る拡張関数のセットとして定義できます。この例では、 JFrameメニューが構築されています:

import javax.swing.*

fun JFrame.menuBar(init: JMenuBar.() -> Unit) {
    val menuBar = JMenuBar()
    menuBar.init()
    setJMenuBar(menuBar)
}

fun JMenuBar.menu(caption: String, init: JMenu.() -> Unit) {
    val menu = JMenu(caption)
    menu.init()
    add(menu)
}

fun JMenu.menuItem(caption: String, init: JMenuItem.() -> Unit) {
    val menuItem = JMenuItem(caption)
    menuItem.init()
    add(menuItem)
}

これらの関数を使用すると、オブジェクトのツリー構造を簡単に構築できます。

class MyFrame : JFrame() {
    init {
        menuBar {
            menu("Menu1") {
                menuItem("Item1") {
                    // Initialize MenuItem with some Action
                }
                menuItem("Item2") {}
            }
            menu("Menu2") {
                menuItem("Item3") {}
                menuItem("Item4") {}
            }
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow