# Diamond Problem(菱形継承問題)テスト print("=== Diamond Problem Test ===") # 中間層 box Middle from StringBox { init { middle_data } birth(content) { from StringBox.birth(content) me.middle_data = "middle" print("Middle.birth called") } override toString() { print("Middle.toString called") return "Middle[" + from StringBox.toString() + "]" } } # 多重委譲(問題のあるパターン) box Diamond from Middle, StringBox { init { diamond_data } birth(content) { from Middle.birth(content) # from StringBox.birth(content) # これも必要? me.diamond_data = "diamond" print("Diamond.birth called") } override toString() { print("Diamond.toString called") # どちらも StringBox.toString() を呼ぶ local a = from Middle.toString() # Middle -> StringBox local b = from StringBox.toString() # 直接 StringBox return "Diamond[" + a + " | " + b + "]" } } # テスト実行 print("\n--- Creating diamond instance ---") local diamond = new Diamond("test") print("\n--- Calling toString ---") print(diamond.toString()) print("\n=== Test completed ===")