スライスを反復処理して変更する
スライスを通して値を読み書きします。
「スライスを反復処理して変更する」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
スライスを走査する
スライスを保持したら、通常はすべての要素を順番に処理したくなります。Zig の for ループを使うと、スライスを先頭から末尾まで簡潔に反復処理できます。🔁
要素に対する for
スライスを丸かっこで囲み、パイプ内のキャプチャで各要素に名前を付けます。ループの各反復で 1 つの値が渡されます。
for (items) |value| {
// use value
}デフォルトでは読み取り専用
通常のキャプチャでは、各要素のコピーが得られます。そのコピーを変更しても、スライスの基になるデータは変わりません。
変更するにはポインターでキャプチャする
キャプチャ名の前に * を付けると、コピーではなくポインターを取得できます。これでポインター経由の書き込みによって、実際の要素を編集できます。
for (items) |*value| {
value.* += 1;
}デリファレンスして書き込む
ポインターキャプチャでは、.* を使って指し先の値にアクセスします。この構文によって、値の読み取りと代入の両方ができます。
value.* = 0;スライスは変更可能でなければなりません
要素を変更するには、スライス型が []const T ではなく通常の []T でなければなりません。const スライスでは、そこを通じた書き込みが禁止されます。
インデックス付きでループする
スライスと範囲を組み合わせると、カウンターも取得できます。コンマの後にある 2 番目のキャプチャが現在のインデックスです。
for (items, 0..) |value, i| {
// i is the index
}直接インデックス指定する
ループのキャプチャを使わず、インデックスで要素を指定して書き込むこともできます。配列と同じように、角かっきを通じて代入します。
items[0] = 42;2 つのスライスを同時に反復処理する
1 つの for ループに複数のスライスを渡すと、歩調を合わせて走査できます。スライスの長さが同じでなければ、パニックが発生します。
for (xs, ys) |x, y| {
// x and y line up
}結果を累積する
ループの前で宣言した var に現在の合計を保持し、各反復で更新して合計を計算します。
var total: i32 = 0;
for (items) |v| total += v;continue でスキップする
ループ内で continue を使うと、次の要素へ直接移ります。簡単なテストに失敗した値を無視するのに使えます。
for (items) |v| {
if (v < 0) continue;
}確認問題
[]i32 スライスのすべての要素を、その場で 2 倍にしたいとします。書き戻しができるキャプチャ形式はどれでしょうか。
まとめ
for でスライスをループします。通常のキャプチャではコピーを読み取り、|*value| と .* を使うとその場で変更でき、範囲を追加するとインデックスを追跡できます。🎯
よくある質問
「スライスを反復処理して変更する」レッスンは無料ですか?
はい。「スライスを反復処理して変更する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「スライスを反復処理して変更する」で何を学びますか?
スライスを通して値を読み書きします。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「スライスを反復処理して変更する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 固定長配列
- スライス:ポインターと長さの組み合わせ
- array[start..end]でスライスする
- スライスを反復処理して変更する