-
Notifications
You must be signed in to change notification settings - Fork 3
buffer
ab25cq edited this page Feb 16, 2018
·
4 revisions
English page is here >> English page
Stringクラスは文字列を表すクラスですがバッファークラスはバイト列を表すクラスです。内部的にはpointerオブジェクトにmallocしてメモリを確保しています。使い方は以下です。
> a:Buffer = new Buffer(3.to_ulong);
> a.append('A'.to_byte);
> a.append('B'.to_byte);
> a.append('C'.to_byte);
> a
ABC
注意してほしいのはnull-terminatedされないことです。toString()されるときはnull-terminatedされますが、バッファは上の例だとABCのみ入っていて末尾に0は入っていません。 Bufferオブジェクトもappendできます。
> a:Buffer = new Buffer(3.to_ulong);
> a.append(B"ABC");
> a
ABC
Bufferクラスのオブジェクト表現はB""です。Bufferクラスは大きさは決まっていなくappendされると自動的に新しくメモリが確保されます。その時reallocされるので、self.bufferのさすメモリは変わる可能性があることに注意してください。 charsでoffset(先頭メモリからのインデックス)によるデータのアクセスができます。戻り値はbyteです。
> a:Buffer = B"ABC";
ABC
> a.chars(0)
65
> a.chars(1)
66
> a.chars(-1)
67
equalsでBufferオブジェクト同士を比較できます。
> B"ABC".equals(B"ABC")
true
> B"ABC".equals(B"DEF")
false
subBufferで部分バッファがとれます。
> B"ABCDEF".subBuffer(1,3);
BC
> B"ABCDEF".subBuffer(3,-1);
DEF
-1は末尾を表します。
- フリーフォーマット
- 変数と関数について
- 条件分岐と演算子
- 論理演算子
- ビット演算子
- ループ
- ブロック
- コメント
- アノテーション
- ナルエイブル
- プリミティブクラス
- 配列
- クラス
- クラスフィールドとクラスメソッド
- dynamic_class
- boxingとunboxing
- プリミティブ型とスペシャルフィールド
- スペシャルメソッド
- インターフェース
- 移譲
- モジュール
- ジェネリクス
- メソッドジェネリクス
- 関数
- 列挙型(enum)
- 自動setterとgetterの定義
- when文
- 変数の宣言の取り消し
- 例外処理
- 多重代入
- 代入時の自動キャスト
- C言語へのFFI
- ローカル変数の宣言
- メモリーセーフなポインタ
- 例外演算子
- 糖衣構文