Files
hakorune/docs/private/papers/reference/boxes-system/box-reference.md

6.0 KiB
Raw Blame History

📦 Nyash Box型完全リファレンス

Nyashで利用できる全ビルトインBox型の完全API仕様書です。

📋 Box型分類

🎯 基本型BoxPrimitive Boxes

StringBox

文字列を扱う基本Box型。

local str = "Hello, Nyash!"  // 自動的にStringBox
local explicit = new StringBox("Explicit creation")

// メソッド
str.length()         // 文字数を取得
str.toUpperCase()    // 大文字変換
str.split(",")       // 文字列分割
str.contains("Nya")  // 部分文字列検索

IntegerBox

整数を扱う基本Box型。

local num = 42              // 自動的にIntegerBox  
local big = new IntegerBox(1000000)

// メソッド
num.add(10)          // 加算
num.multiply(2)      // 乗算
num.toString()       // 文字列変換
num.isEven()         // 偶数判定

FloatBox

浮動小数点数を扱うBox型。

local pi = 3.14159          // 自動的にFloatBox
local precise = new FloatBox(2.718281828)

// メソッド
pi.round(2)          // 小数点以下2桁に丸める
pi.ceil()            // 切り上げ
pi.floor()           // 切り下げ
pi.toString()        // 文字列変換

BoolBox

真偽値を扱うBox型。

local flag = true           // 自動的にBoolBox
local explicit = new BoolBox(false)

// メソッド
flag.toString()      // 文字列変換
flag.not()           // 論理反転

NullBox

null値を表すBox型。

local empty = null          // NullBox
local check = empty.isNull() // true

🔢 計算・データ処理系

MathBox

数学関数を提供するBox型。

local math = new MathBox()

// メソッド
math.sin(pi/2)       // サイン関数
math.cos(0)          // コサイン関数  
math.sqrt(16)        // 平方根
math.pow(2, 8)       // べき乗
math.random()        // 乱数生成

ArrayBox

配列操作を行うBox型。

local arr = new ArrayBox()

// メソッド
arr.push("item")     // 要素追加
arr.get(0)           // 要素取得
arr.set(0, "new")    // 要素設定
arr.length()         // 長さ取得
arr.clear()          // 全削除

MapBox

連想配列辞書操作を行うBox型。

local map = new MapBox()

// メソッド
map.set("key", "value") // キー・値設定
map.get("key")          // 値取得
map.has("key")          // キー存在確認
map.keys()              // 全キー取得
map.clear()             // 全削除

🔗 通信・ネットワーク系

P2PBox

P2P通信を行うードを表すBox。

// コンストラクタ
local node = new P2PBox(node_id, world)

パラメータ:

  • node_id (String): ノードの一意識別子
  • world (IntentBox): 参加する通信世界

メソッド:

send(intent, data, target)
local result = node.send("greeting", message_data, "target_node_id")
  • intent (String): メッセージの種類
  • data (Box): 送信するデータ
  • target (String): 送信先ードID
  • 戻り値: StringBox("sent")
on(intent, callback)
node.on("chat", callback_function)
  • intent (String): 監視するメッセージ種類
  • callback (MethodBox): 受信時に呼ばれる関数
off(intent)
node.off("chat")
  • intent (String): 解除するメッセージ種類

SocketBox

TCP/IPソケット通信を行うBox型。

local socket = new SocketBox()

// サーバーモード
socket.listen(8080)      // ポート8080でリッスン
socket.accept()          // 接続受け入れ

// クライアントモード  
socket.connect("localhost", 8080) // 接続
socket.send("Hello")     // データ送信
socket.receive()         // データ受信
socket.close()           // 接続終了

🖥️ I/O・GUI系

ConsoleBox

基本的なコンソールI/Oを行うBox型。

local console = new ConsoleBox()

// メソッド
console.log("message")   // 標準出力
console.error("error")   // エラー出力
console.input()          // 標準入力

FileBox

ファイル操作を行うBox型プラグイン対応

local f = new FileBox("data.txt")

// メソッド
f.write("content")       // ファイル書き込み
f.read()                 // ファイル読み込み
f.exists()               // ファイル存在確認
f.close()                // ファイル閉じる

EguiBox

GUI開発を行うBox型。

local app = new EguiBox()

// メソッド
app.setTitle("My App")   // タイトル設定
app.setSize(800, 600)    // サイズ設定
app.run()                // GUI実行

🎮 特殊・デバッグ系

DebugBox

デバッグ・イントロスペクション用Box型。

local debug = new DebugBox()

// メソッド
debug.startTracking()    // メモリ追跡開始
debug.trackBox(obj, "desc") // オブジェクト追跡
debug.memoryReport()     // メモリレポート

RandomBox

乱数生成専用Box型。

local rand = new RandomBox()

// メソッド
rand.next()              // 0-1の乱数
rand.nextInt(100)        // 0-99の整数乱数
rand.nextFloat(10.0)     // 0-10の浮動小数点乱数

TimeBox

時間・日付操作Box型。

local time = new TimeBox()

// メソッド
time.now()               // 現在時刻取得
time.format("YYYY-MM-DD") // 時刻フォーマット
time.addDays(7)          // 日数加算

🔌 プラグインBox

Nyashはプラグインシステムにより、新しいBox型を動的に追加できます。

プラグイン設定nyash.toml

[plugins]
FileBox = "nyash-filebox-plugin"
DatabaseBox = "nyash-db-plugin"

型情報管理

[plugins.FileBox.methods]
write = { args = [{ from = "string", to = "bytes" }] }
read = { args = [] }

詳細: プラグインシステム


最終更新: 2025年8月19日 - Box型リファレンス統合版 関連ドキュメント: Everything is Box哲学 | プラグインシステム