array[start..end]でスライスする
コピーせずに部分ビューを切り出します。
「array[start..end]でスライスする」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
ビューを切り出す
配列の一部だけが必要になることがあります。スライシングを使うと、要素をコピーせずにサブ範囲を新しいスライスとして取得できます。✂️
範囲構文
角かっこの中に開始位置と終了位置を置き、2 つのドットでつなぎます。array[start..end] と書くと、その位置を対象とするスライスが生成されます。
const part = data[1..3];終了位置は含まれません
終了インデックスは排他的です。そのため、array[1..3] には位置 1 と 2 が含まれ、3 の手前で止まります。結果の長さは 2 です。
末尾までスライスする
終了位置を省略すると、最後の要素まで範囲が続きます。data[2..] はインデックス 2 以降のすべてを意味します。
const tail = data[2..];全体をスライスする
[0..] を使うと、配列全体をスライスに変換できます。配列全体を受け取るスライス対応コードに渡す一般的な方法です。
const all = data[0..];コピーは発生しません
スライシングで計算されるのは、新しいポインターと長さだけです。要素は元の配列と共有されるため、高速でメモリ確保も発生しません。
スライスをスライスする
配列と同じように、スライスもスライスできます。新しい範囲はスライス自身の開始位置を基準とするため、ビューをさらに狭められます。
const inner = part[0..1];範囲外は検出されます
開始位置または終了位置がデータの範囲外になると、安全なビルドでは実行時にパニックが発生します。これにより、所有していないメモリを読み取ることを防げます。
コンパイル時スライス
境界がコンパイル時に分かっている場合、結果は型に固定された長さが組み込まれた配列へのポインターになることがあります。
番兵終端スライス
[start..end :0] のように終端子を追加すると、末尾が必ずゼロになります。C コードに文字列を渡すときに便利です。
const cstr = buf[0..n :0];範囲から長さを求める
スライスの長さは単純に終了位置から開始位置を引いた値です。そのため、data[2..5] は常に len が正確に 3 のスライスになります。
const three = data[2..5]; // len == 3確認問題
const data = [_]i32{ 0, 1, 2, 3, 4 } とします。data[1..4] の長さはいくつでしょうか。
まとめ
array[start..end] 構文ではサブビューを切り出します。終了位置は含まれず、省略すると末尾までになり、コピーは発生せず、境界チェックも維持されます。🎯
よくある質問
「array[start..end]でスライスする」レッスンは無料ですか?
はい。「array[start..end]でスライスする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「array[start..end]でスライスする」で何を学びますか?
コピーせずに部分ビューを切り出します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「array[start..end]でスライスする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 固定長配列
- スライス:ポインターと長さの組み合わせ
- array[start..end]でスライスする
- スライスを反復処理して変更する