# Playground Samples（コピー＆ペースト用サンプル）

最終更新: 2025-08-13

Playground: https://moe-charm.github.io/nyash/projects/nyash-wasm/nyash_playground.html

---

## 1) 循環参照 vs weak（自動nil化）

```nyash
box Parent {
    init { child }
    pack() {
        me.child = new Child()
        me.child.setParent(me)
    }
    getName() { return "P" }
    fini() { print("Parent.fini") }
}

box Child {
    init { weak parent }
    setParent(p) { me.parent = p }
    show() {
        if (me.parent != null) { print("parent=" + me.parent.getName()) }
        else { print("parent is gone") }
    }
    fini() { print("Child.fini") }
}

p = new Parent()
p.child.show()      # => parent=P
p.fini()            # 親を破棄
p.child.show()      # => parent is gone（想定）
```

---

## 2) 再代入時の fini 発火（予備解放）

```nyash
box Holder { init { obj } }
box Thing  { fini() { print("Thing.fini") } }

h = new Holder()
h.obj = new Thing()
h.obj = new Thing()  # 旧 obj に対して fini() が呼ばれる
```

---

## 3) スコープ抜けでローカル解放

```nyash
function make() {
    local t
    t = new Thing()
}

box Thing { fini() { print("Thing.fini (scope)") } }

make()  # => Thing.fini (scope)
```

