feat: ArrayBox完全実装 - Nyash初の動的配列コレクション!

## 🎯 実装内容
- ArrayBoxにNyashBoxトレイト完全実装
- Arc<Mutex>による内部可変性実現(MapBoxと同じパターン)
- 全メソッド実装: push/pop/get/set/length/indexOf/contains/join/clear/remove
- 包括的なテストスイート作成

## 🔧 技術的改善
- GitHub Copilot作成の基本構造をNyash対応に拡張
- execute_array_methodを&self参照に修正
- collection_methods.rsとの統合完了

##  テスト結果
- 全機能正常動作確認
- 異なる型の要素混在可能(Everything is Box哲学)
- インデックス範囲外アクセスでNullBox返却

## 📝 残課題
- BufferBox, ResultBox, FileBox等は基本構造のみ(未実装)
- RegexBoxはNyashBoxトレイト実装済みだがregex依存関係未追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-08-10 12:24:59 +09:00
parent 85a8c7f2d7
commit cbee14809d
8 changed files with 408 additions and 56 deletions

74
test_array_box.nyash Normal file
View File

@ -0,0 +1,74 @@
// ArrayBox実装テスト
print("=== ArrayBox実装テスト ===")
// 1. ArrayBoxの作成
print("\n1. ArrayBoxの作成:")
local arr
arr = new ArrayBox()
print("ArrayBox created: " + arr.toString())
// print("Type: " + arr.type_name()) // type_nameはArrayBoxのメソッドではない
print("Initial length: " + arr.length())
// 2. 要素の追加push
print("\n2. 要素の追加:")
arr.push("Apple")
arr.push("Banana")
arr.push("Cherry")
arr.push(42)
arr.push(true)
print("After push: " + arr.toString())
print("Length: " + arr.length())
// 3. 要素の取得get
print("\n3. 要素の取得:")
print("arr.get(0) = " + arr.get(0))
print("arr.get(1) = " + arr.get(1))
print("arr.get(3) = " + arr.get(3))
print("arr.get(10) = " + arr.get(10)) // 範囲外
// 4. 要素の削除pop
print("\n4. 要素の削除:")
local popped
popped = arr.pop()
print("Popped: " + popped)
print("After pop: " + arr.toString())
print("Length: " + arr.length())
// 5. インデックス検索indexOf
print("\n5. インデックス検索:")
print("indexOf('Apple') = " + arr.indexOf("Apple"))
print("indexOf('Banana') = " + arr.indexOf("Banana"))
print("indexOf('NotExist') = " + arr.indexOf("NotExist"))
// 6. 要素の確認contains
print("\n6. 要素の確認:")
print("contains('Apple') = " + arr.contains("Apple"))
print("contains(42) = " + arr.contains(42))
print("contains('NotExist') = " + arr.contains("NotExist"))
// 7. 文字列結合join
print("\n7. 文字列結合:")
print("join(', ') = " + arr.join(", "))
print("join(' - ') = " + arr.join(" - "))
// 8. 要素の設定set
print("\n8. 要素の設定:")
arr.set(1, "Orange")
print("After set(1, 'Orange'): " + arr.toString())
// 9. 要素の削除remove
print("\n9. 要素の削除:")
local removed
removed = arr.remove(2)
print("Removed: " + removed)
print("After remove(2): " + arr.toString())
print("Length: " + arr.length())
// 10. 配列のクリアclear
print("\n10. 配列のクリア:")
arr.clear()
print("After clear: " + arr.toString())
print("Length: " + arr.length())
print("isEmpty: " + arr.isEmpty())
print("\n=== ArrayBoxテスト完了 ===")