Zig Academy · レッスン

スライス:ポインターと長さの組み合わせ

配列の一部を参照します。

レッスン 2/413 ステップ

「スライス:ポインターと長さの組み合わせ」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

スライスが存在する理由

配列の長さは固定ですが、関数では任意の長さを扱いたいことがよくあります。スライスなら、要素の柔軟な範囲を表せるため、この問題を解決できます。🔪

2つのデータ

スライスは、実際には2つのものをまとめたものです。先頭要素へのポインターと、それに続く要素数を表す長さです。

スライスの型

スライスの型は、空の角括弧と要素の型を使って[]Tと記述します。[]i32は符号付き整数のスライスを意味します。

var view: []i32 = undefined;

スライスは所有せず借用する

スライスはメモリを所有せず、通常は配列など別のもののビューを借用します。基になるデータは、スライスより長く存続しなければなりません。

長さは実行時に決まる

配列とは異なり、スライスのlenは実行時の値です。これにより、1つのスライス型でさまざまなサイズを扱えます。

const n = view.len;

配列からスライスへ

[0..]を使うと、配列全体をスライスとして取得できます。これはインデックス0から末尾までという意味です。スライスはその配列を指すようになります。

var data = [_]i32{ 5, 6, 7 };
const s = data[0..];

スライスのインデックス指定

配列と同じように角括弧を使って、スライスの要素を読み取れます。保存されたポインターにインデックスを加えて、値を見つけます。

const middle = s[1];

読み取り専用スライス

[]const u8は読み取り専用のスライスです。constによって、借用したデータが誤って変更されるのを防ぎます。

const msg: []const u8 = "hi";

スライスの受け渡しは低コスト

スライスを関数に渡してもコピーされるのはポインターと長さだけで、要素はコピーされません。大きなバッファーも追加コストなしで渡せます。

fn sum(items: []const i32) i32 {
    // walk items here
}

スライスも範囲チェックされる

スライスは長さを保持しているため、インデックス操作もチェックされます。len を超えると、安全なビルドでは安全機構によるパニックが発生します。

空のスライスも有効です

スライスには要素を 0 個格納できます。空のスライスは単に len が 0 に等しいだけで、通常どおり受け渡しできます。

const nothing: []const i32 = &[_]i32{};

確認問題

固定長配列と比べて、スライスが実際に格納しているものについて考えてみてください。どの組み合わせが正しいでしょうか。

まとめ

スライスは、既存データへのビューを借用するポインターと長さの組み合わせです。境界チェックが維持され、参照によって低コストに受け渡せます。🎯

無料で開始

AI チューターと学ぶ Zig — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「スライス:ポインターと長さの組み合わせ」レッスンは無料ですか?

はい。「スライス:ポインターと長さの組み合わせ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「スライス:ポインターと長さの組み合わせ」で何を学びますか?

配列の一部を参照します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「スライス:ポインターと長さの組み合わせ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 固定長配列
  2. スライス:ポインターと長さの組み合わせ
  3. array[start..end]でスライスする
  4. スライスを反復処理して変更する
← Zig Academyに戻る