[{"data":1,"prerenderedAt":620},["ShallowReactive",2],{"navigation_docs":3,"-struct-init-deinit":198,"-struct-init-deinit-surround":615},[4,30,81,118,147,171,184],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,15,20,25],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","/getting-started/quickstart","1.getting-started/4.quickstart","i-lucide-code-xml",{"title":26,"path":27,"stem":28,"icon":29},"Troubleshooting","/getting-started/troubleshooting","1.getting-started/5.troubleshooting","i-lucide-wrench",{"title":31,"icon":6,"path":32,"stem":33,"children":34,"page":6},"Core Features","/core-features","2.core-features",[35,39,43,48,52,56,60,64,68,73,77],{"title":36,"path":37,"stem":38,"icon":24},"Main function","/core-features/main-function","2.core-features/1.main-function",{"title":40,"path":41,"stem":42,"icon":24},"Variables","/core-features/variables","2.core-features/2.variables",{"title":44,"path":45,"stem":46,"icon":47},"Comment","/core-features/comment","2.core-features/3.comment","i-lucide-hash",{"title":49,"path":50,"stem":51,"icon":24},"Conditionals","/core-features/conditionals","2.core-features/4.conditionals",{"title":53,"path":54,"stem":55,"icon":24},"Loops","/core-features/loops","2.core-features/5.loops",{"title":57,"path":58,"stem":59,"icon":24},"Functions","/core-features/functions","2.core-features/6.functions",{"title":61,"path":62,"stem":63,"icon":24},"Pointers","/core-features/pointers","2.core-features/7.pointers",{"title":65,"path":66,"stem":67,"icon":24},"Data types","/core-features/datatypes","2.core-features/8.datatypes",{"title":69,"path":70,"stem":71,"icon":72},"Operators","/core-features/operators","2.core-features/9.operators","i-lucide-percent",{"title":74,"path":75,"stem":76,"icon":24},"Literals","/core-features/a.literals","2.core-features/a.literals",{"title":78,"path":79,"stem":80,"icon":24},"Keywords","/core-features/b.keywords","2.core-features/b.keywords",{"title":82,"icon":6,"path":83,"stem":84,"children":85,"page":6},"Features","/features","3.features",[86,90,94,98,102,106,110,114],{"title":87,"path":88,"stem":89,"icon":24},"Const","/features/const","3.features/1.const",{"title":91,"path":92,"stem":93,"icon":24},"Define","/features/define","3.features/2.define",{"title":95,"path":96,"stem":97,"icon":24},"Enum","/features/enum","3.features/3.enum",{"title":99,"path":100,"stem":101,"icon":24},"Union","/features/union","3.features/4.union",{"title":103,"path":104,"stem":105,"icon":24},"Overloading","/features/overloading","3.features/5.overloading",{"title":107,"path":108,"stem":109,"icon":24},"Lambda","/features/lambda","3.features/6.lambda",{"title":111,"path":112,"stem":113,"icon":24},"Callback","/features/callback","3.features/7.callback",{"title":115,"path":116,"stem":117,"icon":24},"Auto","/features/auto","3.features/8.auto",{"title":119,"icon":6,"path":120,"stem":121,"children":122,"page":6},"Advance Features","/advance","4.advance",[123,127,131,135,139,143],{"title":124,"path":125,"stem":126,"icon":24},"Generic Type","/advance/generic-type","4.advance/1.generic-type",{"title":128,"path":129,"stem":130,"icon":24},"Errors","/advance/error","4.advance/2.error",{"title":132,"path":133,"stem":134,"icon":24},"Annotation","/advance/annotation","4.advance/3.annotation",{"title":136,"path":137,"stem":138,"icon":24},"Variadic Function","/advance/variadic-func","4.advance/4.variadic-func",{"title":140,"path":141,"stem":142,"icon":24},"Module","/advance/module-interface","4.advance/5.module-interface",{"title":144,"path":145,"stem":146,"icon":24},"Operator Overloading","/advance/operator-overloading","4.advance/6.operator-overloading",{"title":148,"icon":6,"path":149,"stem":150,"children":151,"page":6},"Struct","/struct","5.struct",[152,155,159,163,167],{"title":148,"path":153,"stem":154,"icon":24},"/struct/struct","5.struct/1.struct",{"title":156,"path":157,"stem":158,"icon":24},"Methods","/struct/methods","5.struct/2.methods",{"title":160,"path":161,"stem":162,"icon":24},"Init/Deinit","/struct/init-deinit","5.struct/3.init-deinit",{"title":164,"path":165,"stem":166,"icon":24},"Encapsulation","/struct/encapsulation","5.struct/4.encapsulation",{"title":168,"path":169,"stem":170,"icon":24},"Static","/struct/static","5.struct/5.static",{"title":172,"icon":6,"path":173,"stem":174,"children":175,"page":6},"Data Structures","/data-structure","6.data-structure",[176,180],{"title":177,"path":178,"stem":179,"icon":24},"Array","/data-structure/array","6.data-structure/array",{"title":181,"path":182,"stem":183,"icon":24},"Structural Type","/data-structure/strutural-type","6.data-structure/strutural-type",{"title":185,"icon":6,"path":186,"stem":187,"children":188,"page":6},"Standard Libraries","/stdlib","7.stdlib",[189,194],{"title":190,"path":191,"stem":192,"icon":193},"stdlib","/stdlib/stdlib","7.stdlib/stdlib","i-lucide-library-big",{"title":195,"path":196,"stem":197,"icon":24},"syscall","/stdlib/syscall","7.stdlib/syscall",{"id":199,"title":160,"body":200,"description":608,"extension":609,"links":610,"meta":611,"navigation":612,"path":161,"seo":613,"stem":162,"__hash__":614},"docs/5.struct/3.init-deinit.md",{"type":201,"value":202,"toc":606},"minimark",[203,216,234,248,450,459,465,596,602],[204,205,206,207,211,212,215],"p",{},"Constructor and Desctructor method do exist for struct in Cambo, and they can be defined by using keyword ",[208,209,210],"code",{},"init"," and ",[208,213,214],{},"deinit"," respectively followed by the struct name.",[217,218,219],"accordion",{},[220,221,224],"accordion-item",{"icon":222,"label":223},"i-lucide-circle-help","What is a constructor & a destructor?",[225,226,227,231],"ul",{},[228,229,230],"li",{},"A construtor is a special method that is automatically invoked when an instance is created.",[228,232,233],{},"A destrutor is a special method that is automatically invoke when a instance goes out of scope.",[204,235,236,240,241,244,245,247],{},[237,238,239],"strong",{},"Example 1:"," In code below, we're going to define a constructor for the struct ",[208,242,243],{},"Vect2"," using ",[208,246,210],{},".",[249,250,255],"pre",{"className":251,"code":252,"language":253,"meta":254,"style":254},"language-kh shiki shiki-themes material-theme-lighter one-light one-dark-pro","struct Vect2{\n  float x, y;\n\n  init Vect2(int x, int y){\n    self.x = x;\n    self.y = y;\n  }\n}\n\nint main(string args[]){\n\n  Vect2 vect = Vect(3, 4);\n\n  return 0;\n}\n","kh","",[208,256,257,274,292,299,326,345,360,366,372,377,396,401,429,434,445],{"__ignoreMap":254},[258,259,262,266,270],"span",{"class":260,"line":261},"line",1,[258,263,265],{"class":264},"sQsOY","struct",[258,267,269],{"class":268},"s8dPH"," Vect2",[258,271,273],{"class":272},"sM89C","{\n",[258,275,277,280,283,286,289],{"class":260,"line":276},2,[258,278,279],{"class":268},"  float",[258,281,282],{"class":268}," x",[258,284,285],{"class":272},", ",[258,287,288],{"class":268},"y",[258,290,291],{"class":272},";\n",[258,293,295],{"class":260,"line":294},3,[258,296,298],{"emptyLinePlaceholder":297},true,"\n",[258,300,302,305,308,311,314,316,318,320,323],{"class":260,"line":301},4,[258,303,304],{"class":264},"  init",[258,306,269],{"class":307},"spnjr",[258,309,310],{"class":272},"(",[258,312,313],{"class":268},"int",[258,315,282],{"class":268},[258,317,285],{"class":272},[258,319,313],{"class":268},[258,321,322],{"class":268}," y",[258,324,325],{"class":272},"){\n",[258,327,329,332,334,337,341,343],{"class":260,"line":328},5,[258,330,331],{"class":268},"    self",[258,333,247],{"class":272},[258,335,336],{"class":268},"x",[258,338,340],{"class":339},"sB4Xn"," =",[258,342,282],{"class":268},[258,344,291],{"class":272},[258,346,348,350,352,354,356,358],{"class":260,"line":347},6,[258,349,331],{"class":268},[258,351,247],{"class":272},[258,353,288],{"class":268},[258,355,340],{"class":339},[258,357,322],{"class":268},[258,359,291],{"class":272},[258,361,363],{"class":260,"line":362},7,[258,364,365],{"class":272},"  }\n",[258,367,369],{"class":260,"line":368},8,[258,370,371],{"class":272},"}\n",[258,373,375],{"class":260,"line":374},9,[258,376,298],{"emptyLinePlaceholder":297},[258,378,380,382,385,387,390,393],{"class":260,"line":379},10,[258,381,313],{"class":268},[258,383,384],{"class":307}," main",[258,386,310],{"class":272},[258,388,389],{"class":264},"string",[258,391,392],{"class":268}," args",[258,394,395],{"class":272},"[]){\n",[258,397,399],{"class":260,"line":398},11,[258,400,298],{"emptyLinePlaceholder":297},[258,402,404,407,410,412,415,417,421,423,426],{"class":260,"line":403},12,[258,405,406],{"class":268},"  Vect2",[258,408,409],{"class":268}," vect",[258,411,340],{"class":339},[258,413,414],{"class":307}," Vect",[258,416,310],{"class":272},[258,418,420],{"class":419},"sriKn","3",[258,422,285],{"class":272},[258,424,425],{"class":419},"4",[258,427,428],{"class":272},");\n",[258,430,432],{"class":260,"line":431},13,[258,433,298],{"emptyLinePlaceholder":297},[258,435,437,440,443],{"class":260,"line":436},14,[258,438,439],{"class":264},"  return",[258,441,442],{"class":419}," 0",[258,444,291],{"class":272},[258,446,448],{"class":260,"line":447},15,[258,449,371],{"class":272},[204,451,452,453,456,457,247],{},"Notice how we created the instance by doing ",[208,454,455],{},"Vect(3, 4)",", this works because we have defined a constructor method for struct ",[208,458,243],{},[204,460,461,464],{},[237,462,463],{},"Example 2:"," This example, we're going to show deinit can be used to define the destructor of a struct.",[249,466,468],{"className":251,"code":467,"language":253,"meta":254,"style":254},"struct Data{\n  int data;\n\n  deinit Data(){\n    print(\"data was destroyed!\\n\");\n  }\n}\n\nint main(string args[]){\n\n  {\n    Data data = Data();\n  }\n\n  return 0;\n}\n",[208,469,470,479,489,493,503,526,530,534,538,552,556,561,575,579,583,591],{"__ignoreMap":254},[258,471,472,474,477],{"class":260,"line":261},[258,473,265],{"class":264},[258,475,476],{"class":268}," Data",[258,478,273],{"class":272},[258,480,481,484,487],{"class":260,"line":276},[258,482,483],{"class":268},"  int",[258,485,486],{"class":268}," data",[258,488,291],{"class":272},[258,490,491],{"class":260,"line":294},[258,492,298],{"emptyLinePlaceholder":297},[258,494,495,498,500],{"class":260,"line":301},[258,496,497],{"class":264},"  deinit",[258,499,476],{"class":307},[258,501,502],{"class":272},"(){\n",[258,504,505,508,510,514,518,522,524],{"class":260,"line":328},[258,506,507],{"class":307},"    print",[258,509,310],{"class":272},[258,511,513],{"class":512},"sVH1b","\"",[258,515,517],{"class":516},"spZWa","data was destroyed!",[258,519,521],{"class":520},"scPpd","\\n",[258,523,513],{"class":512},[258,525,428],{"class":272},[258,527,528],{"class":260,"line":347},[258,529,365],{"class":272},[258,531,532],{"class":260,"line":362},[258,533,371],{"class":272},[258,535,536],{"class":260,"line":368},[258,537,298],{"emptyLinePlaceholder":297},[258,539,540,542,544,546,548,550],{"class":260,"line":374},[258,541,313],{"class":268},[258,543,384],{"class":307},[258,545,310],{"class":272},[258,547,389],{"class":264},[258,549,392],{"class":268},[258,551,395],{"class":272},[258,553,554],{"class":260,"line":379},[258,555,298],{"emptyLinePlaceholder":297},[258,557,558],{"class":260,"line":398},[258,559,560],{"class":272},"  {\n",[258,562,563,566,568,570,572],{"class":260,"line":403},[258,564,565],{"class":268},"    Data",[258,567,486],{"class":268},[258,569,340],{"class":339},[258,571,476],{"class":307},[258,573,574],{"class":272},"();\n",[258,576,577],{"class":260,"line":431},[258,578,365],{"class":272},[258,580,581],{"class":260,"line":436},[258,582,298],{"emptyLinePlaceholder":297},[258,584,585,587,589],{"class":260,"line":447},[258,586,439],{"class":264},[258,588,442],{"class":419},[258,590,291],{"class":272},[258,592,594],{"class":260,"line":593},16,[258,595,371],{"class":272},[204,597,598,599,601],{},"To actually see the ",[208,600,517],{}," get printed to the output, we need to wrap with {} when creating an instance, so when it goes out of scope, the destructor will be invoked.",[603,604,605],"style",{},"html pre.shiki code .sQsOY, html code.shiki .sQsOY{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#A626A4;--shiki-default-font-style:inherit;--shiki-dark:#C678DD;--shiki-dark-font-style:inherit}html pre.shiki code .s8dPH, html code.shiki .s8dPH{--shiki-light:#90A4AE;--shiki-default:#E45649;--shiki-dark:#E06C75}html pre.shiki code .sM89C, html code.shiki .sM89C{--shiki-light:#90A4AE;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .spnjr, html code.shiki .spnjr{--shiki-light:#6182B8;--shiki-default:#4078F2;--shiki-dark:#61AFEF}html pre.shiki code .sB4Xn, html code.shiki .sB4Xn{--shiki-light:#39ADB5;--shiki-default:#383A42;--shiki-dark:#ABB2BF}html pre.shiki code .sriKn, html code.shiki .sriKn{--shiki-light:#F76D47;--shiki-default:#986801;--shiki-dark:#D19A66}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVH1b, html code.shiki .sVH1b{--shiki-light:#39ADB5;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .spZWa, html code.shiki .spZWa{--shiki-light:#91B859;--shiki-default:#50A14F;--shiki-dark:#98C379}html pre.shiki code .scPpd, html code.shiki .scPpd{--shiki-light:#90A4AE;--shiki-default:#0184BC;--shiki-dark:#56B6C2}",{"title":254,"searchDepth":276,"depth":276,"links":607},[],"Constructor & Destructor.","md",null,{},{"icon":24},{"title":160,"description":608},"rHZ28EAErs8qJxKCSTWpsOL5rVk1Tg5NyzWktoKPpFE",[616,618],{"title":156,"path":157,"stem":158,"description":617,"icon":24,"children":-1},"Keep your functions inside struct!",{"title":164,"path":165,"stem":166,"description":619,"icon":24,"children":-1},"Hide your data!",1774971230779]