我試圖從教程中學習生鏽。我認爲康威的人生遊戲將是一個開始的好地方。如何在結構中初始化這個數組數組?
我無法理解如何編寫這個Grid :: new()fn。
這是我到目前爲止有:
enum Cell {
alive, dead
}
impl Cell {
fn new() -> Cell {
alive
}
struct Grid {
priv inner: [ [Cell, .. GRID_SIZE], .. GRID_SIZE],
}
impl Grid {
fn new() {
Grid { inner: ???? }
}
}
...
fn main() {
let grid = Grid::new(); // Stack allocated grid (internal stack allocad array)
}
我想要的是用於電網與細胞初始化所有價值的「活着」。
謝謝!當我嘗試消化這個時,快速q,是不得不聲明數組大小兩次,一次在聲明中,一次在構造函數(:: new())方法中正常? 結構網格{ 內:[[細胞,.. GRID_SIZE],.. GRID_SIZE], } IMPL網格{ FN新() - >網格{內:[[活着,..GRID_SIZE],.. GRID_SIZE]} } – Short
是的,你就是這麼做的。數組大小明確是固定大小數組類型的一部分,因此您必須在Grid的聲明中指定它。然後用[[alive,..GRID_SIZE],..GRID_SIZE]生成一個固定大小的數組值,其中重複計數..GRID_SIZE指定了有多少個元素。 (此外,數組本身具有類型[T,..LENGTH]。例如,[1,1,1] == [1,3.3]和[1,1,1]的類型爲[ int,..3])。 – telotortium
好的,很酷。由於該類型包含長度,因此必須在聲明和實例化時重複它。謝謝! – Short