Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read
Q&A

How do I (compactly) initialize a 2-d array of structs with the same value?

+2
−0

I learned about the ** operator for array-repeat, and I love it.

I have a struct that contains a 2-d array of inner structs, like

const D1 = 30;
const D2 = 40;
const Inner = struct { .a: u32, .b: bool };

const Outer = struct {
    // ...
    .array: [D1][D2]Inner,
    // ...
};

I would like to "just initialize" the struct in the init() function:

pub fn init() Self {
    return Self{
        .array = FIXME("What goes here?"),
    };
}

For a 1-d array, I could do something like:

// See line 63 of 
// https://ziglang.org/documentation/master/#Arrays

.array_1d = [_]Inner{.a='1', .b=true} ** D2,

But how do I write the expression for a 2-d array?

.array = [_][_]Inner{...} ** D2 ** D1,  // didn't work
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

I don't do zig, but (1 comment)

0 answers

Sign up to answer this question »