57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
|
|
# 🔥 Phase 8.8: pack透明化システム テスト
|
|||
|
|
# ユーザーは`pack`を一切意識せず、`from BuiltinBox()`で自動動作
|
|||
|
|
|
|||
|
|
print("=== pack透明化システム テスト開始 ===")
|
|||
|
|
|
|||
|
|
# テストA: ユーザー定義Box基本動作 (birth優先)
|
|||
|
|
box Life {
|
|||
|
|
init { name, energy }
|
|||
|
|
|
|||
|
|
birth(lifeName) {
|
|||
|
|
me.name = lifeName
|
|||
|
|
me.energy = 100
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
introduce() {
|
|||
|
|
return "私の名前は " + me.name + " です。"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local alice = new Life("Alice")
|
|||
|
|
print("A. " + alice.introduce())
|
|||
|
|
|
|||
|
|
# テストB: ビルトインBox継承(明示的pack使用)
|
|||
|
|
box EnhancedString from StringBox {
|
|||
|
|
init { prefix }
|
|||
|
|
|
|||
|
|
pack(content) {
|
|||
|
|
from StringBox.pack(content) # 明示的pack
|
|||
|
|
me.prefix = ">>> "
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
override toString() {
|
|||
|
|
return me.prefix + from StringBox.toString()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local enhanced = new EnhancedString("Hello")
|
|||
|
|
print("B. " + enhanced.toString())
|
|||
|
|
|
|||
|
|
# テストC: 透明化システム動作 - 最重要テスト
|
|||
|
|
box SimpleString from StringBox {
|
|||
|
|
init { prefix }
|
|||
|
|
|
|||
|
|
birth(content, prefixStr) {
|
|||
|
|
from StringBox(content) # ← 透明化!内部的にpack呼び出し
|
|||
|
|
me.prefix = prefixStr
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
override toString() {
|
|||
|
|
return me.prefix + from StringBox.toString()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local simple = new SimpleString("World", "<<< ")
|
|||
|
|
print("C. " + simple.toString())
|
|||
|
|
|
|||
|
|
print("=== pack透明化システム テスト完了 ===")
|