[{"data":1,"prerenderedAt":816},["ShallowReactive",2],{"navigation_docs":3,"-features-union":198,"-features-union-surround":811},[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":99,"body":200,"description":804,"extension":805,"links":806,"meta":807,"navigation":808,"path":100,"seo":809,"stem":101,"__hash__":810},"docs/3.features/4.union.md",{"type":201,"value":202,"toc":799},"minimark",[203,208,212,281,288,294,299,349,352,356,492,506,509,604,607,616,784,791,795],[204,205,207],"h2",{"id":206},"overview","Overview",[209,210,211],"p",{},"A union is a user-defined type that allows different data types to be stored in the same memory location.",[213,214,220],"pre",{"className":215,"code":216,"filename":217,"language":218,"meta":219,"style":219},"language-kh shiki shiki-themes material-theme-lighter one-light one-dark-pro","union identifier{\n  type identifier,\n  type identifier,\n  ...,\n  type identifier,\n}\n","syntax","kh","",[221,222,223,240,251,260,266,275],"code",{"__ignoreMap":219},[224,225,228,232,236],"span",{"class":226,"line":227},"line",1,[224,229,231],{"class":230},"sQsOY","union",[224,233,235],{"class":234},"s8dPH"," identifier",[224,237,239],{"class":238},"sM89C","{\n",[224,241,243,246,248],{"class":226,"line":242},2,[224,244,245],{"class":230},"  type",[224,247,235],{"class":234},[224,249,250],{"class":238},",\n",[224,252,254,256,258],{"class":226,"line":253},3,[224,255,245],{"class":230},[224,257,235],{"class":234},[224,259,250],{"class":238},[224,261,263],{"class":226,"line":262},4,[224,264,265],{"class":238},"  ...,\n",[224,267,269,271,273],{"class":226,"line":268},5,[224,270,245],{"class":230},[224,272,235],{"class":234},[224,274,250],{"class":238},[224,276,278],{"class":226,"line":277},6,[224,279,280],{"class":238},"}\n",[282,283,284,287],"note",{},[221,285,286],{},"tag"," is reserved, can not be used as an identifier in union!",[209,289,290],{},[291,292,293],"strong",{},"The size of a union depends on one of its member with the largest size.",[295,296,298],"h4",{"id":297},"example","Example",[213,300,302],{"className":215,"code":301,"language":218,"meta":219,"style":219},"union Data {\n  int i;\n  float f;\n  double d;\n}\n",[221,303,304,314,325,335,345],{"__ignoreMap":219},[224,305,306,308,311],{"class":226,"line":227},[224,307,231],{"class":230},[224,309,310],{"class":234}," Data",[224,312,313],{"class":238}," {\n",[224,315,316,319,322],{"class":226,"line":242},[224,317,318],{"class":234},"  int",[224,320,321],{"class":234}," i",[224,323,324],{"class":238},";\n",[224,326,327,330,333],{"class":226,"line":253},[224,328,329],{"class":234},"  float",[224,331,332],{"class":234}," f",[224,334,324],{"class":238},[224,336,337,340,343],{"class":226,"line":262},[224,338,339],{"class":234},"  double",[224,341,342],{"class":234}," d",[224,344,324],{"class":238},[224,346,347],{"class":226,"line":268},[224,348,280],{"class":238},[209,350,351],{},"In this case, since double has is biggest one, which is 64 bits,\nthe size of memory allocated for this union will be 64 bits.",[204,353,355],{"id":354},"how-to-use-it","How to use it?",[213,357,359],{"className":215,"code":358,"language":218,"meta":219,"style":219},"union Data {\n  int i;\n  float f;\n}\n\nint main(string args[]){\n\n  Data data;\n  data.i = 2;\n  data.f = 3.14;\n\n  return 0;\n}\n",[221,360,361,369,377,385,389,395,416,421,432,454,471,476,487],{"__ignoreMap":219},[224,362,363,365,367],{"class":226,"line":227},[224,364,231],{"class":230},[224,366,310],{"class":234},[224,368,313],{"class":238},[224,370,371,373,375],{"class":226,"line":242},[224,372,318],{"class":234},[224,374,321],{"class":234},[224,376,324],{"class":238},[224,378,379,381,383],{"class":226,"line":253},[224,380,329],{"class":234},[224,382,332],{"class":234},[224,384,324],{"class":238},[224,386,387],{"class":226,"line":262},[224,388,280],{"class":238},[224,390,391],{"class":226,"line":268},[224,392,394],{"emptyLinePlaceholder":393},true,"\n",[224,396,397,400,404,407,410,413],{"class":226,"line":277},[224,398,399],{"class":234},"int",[224,401,403],{"class":402},"spnjr"," main",[224,405,406],{"class":238},"(",[224,408,409],{"class":230},"string",[224,411,412],{"class":234}," args",[224,414,415],{"class":238},"[]){\n",[224,417,419],{"class":226,"line":418},7,[224,420,394],{"emptyLinePlaceholder":393},[224,422,424,427,430],{"class":226,"line":423},8,[224,425,426],{"class":234},"  Data",[224,428,429],{"class":234}," data",[224,431,324],{"class":238},[224,433,435,438,441,444,448,452],{"class":226,"line":434},9,[224,436,437],{"class":234},"  data",[224,439,440],{"class":238},".",[224,442,443],{"class":234},"i",[224,445,447],{"class":446},"sB4Xn"," =",[224,449,451],{"class":450},"sriKn"," 2",[224,453,324],{"class":238},[224,455,457,459,461,464,466,469],{"class":226,"line":456},10,[224,458,437],{"class":234},[224,460,440],{"class":238},[224,462,463],{"class":234},"f",[224,465,447],{"class":446},[224,467,468],{"class":450}," 3.14",[224,470,324],{"class":238},[224,472,474],{"class":226,"line":473},11,[224,475,394],{"emptyLinePlaceholder":393},[224,477,479,482,485],{"class":226,"line":478},12,[224,480,481],{"class":230},"  return",[224,483,484],{"class":450}," 0",[224,486,324],{"class":238},[224,488,490],{"class":226,"line":489},13,[224,491,280],{"class":238},[209,493,494,495,498,499,501,502,505],{},"In the code above, ",[221,496,497],{},"data"," is declared without initialization, so the compiler will automatically assign a default value with one of its types, ",[221,500,399],{}," or ",[221,503,504],{},"float"," (usually the first one in the list).",[209,507,508],{},"However, you can also initialize a value directly, see code below:",[213,510,512],{"className":215,"code":511,"language":218,"meta":219,"style":219},"int main(string args[]){\n\n  Data data = Data.i(12); # initialized with int type\n  data.i = 99;\n  data.f = 12.0;\n\n  return 0;\n}\n",[221,513,514,528,532,558,573,588,592,600],{"__ignoreMap":219},[224,515,516,518,520,522,524,526],{"class":226,"line":227},[224,517,399],{"class":234},[224,519,403],{"class":402},[224,521,406],{"class":238},[224,523,409],{"class":230},[224,525,412],{"class":234},[224,527,415],{"class":238},[224,529,530],{"class":226,"line":242},[224,531,394],{"emptyLinePlaceholder":393},[224,533,534,536,538,540,542,544,546,548,551,554],{"class":226,"line":253},[224,535,426],{"class":234},[224,537,429],{"class":234},[224,539,447],{"class":446},[224,541,310],{"class":234},[224,543,440],{"class":238},[224,545,443],{"class":402},[224,547,406],{"class":238},[224,549,550],{"class":450},"12",[224,552,553],{"class":238},"); ",[224,555,557],{"class":556},"seacL","# initialized with int type\n",[224,559,560,562,564,566,568,571],{"class":226,"line":262},[224,561,437],{"class":234},[224,563,440],{"class":238},[224,565,443],{"class":234},[224,567,447],{"class":446},[224,569,570],{"class":450}," 99",[224,572,324],{"class":238},[224,574,575,577,579,581,583,586],{"class":226,"line":268},[224,576,437],{"class":234},[224,578,440],{"class":238},[224,580,463],{"class":234},[224,582,447],{"class":446},[224,584,585],{"class":450}," 12.0",[224,587,324],{"class":238},[224,589,590],{"class":226,"line":277},[224,591,394],{"emptyLinePlaceholder":393},[224,593,594,596,598],{"class":226,"line":418},[224,595,481],{"class":230},[224,597,484],{"class":450},[224,599,324],{"class":238},[224,601,602],{"class":226,"line":423},[224,603,280],{"class":238},[204,605,606],{"id":286},"Tag",[209,608,609,610,612,613,615],{},"There's a built-in feature in every union in your program, which is ",[221,611,286],{},". ",[221,614,286],{}," is like a tracker who keep tracking which type is being used in the time being, allowing you to write safe code.",[213,617,619],{"className":215,"code":618,"language":218,"meta":219,"style":219},"union Data {\n  int i;\n  float f;\n}\n\nint main(string args[]){\n\n  Data data = Data.i(2);\n\n  match(data.tag){\n    case int:\n      # use data.i\n    break;\n    case float:\n      # use data.f\n    break;\n  }\n\n  return 0;\n}\n",[221,620,621,629,637,645,649,653,667,671,693,697,713,724,729,736,746,752,759,765,770,779],{"__ignoreMap":219},[224,622,623,625,627],{"class":226,"line":227},[224,624,231],{"class":230},[224,626,310],{"class":234},[224,628,313],{"class":238},[224,630,631,633,635],{"class":226,"line":242},[224,632,318],{"class":234},[224,634,321],{"class":234},[224,636,324],{"class":238},[224,638,639,641,643],{"class":226,"line":253},[224,640,329],{"class":234},[224,642,332],{"class":234},[224,644,324],{"class":238},[224,646,647],{"class":226,"line":262},[224,648,280],{"class":238},[224,650,651],{"class":226,"line":268},[224,652,394],{"emptyLinePlaceholder":393},[224,654,655,657,659,661,663,665],{"class":226,"line":277},[224,656,399],{"class":234},[224,658,403],{"class":402},[224,660,406],{"class":238},[224,662,409],{"class":230},[224,664,412],{"class":234},[224,666,415],{"class":238},[224,668,669],{"class":226,"line":418},[224,670,394],{"emptyLinePlaceholder":393},[224,672,673,675,677,679,681,683,685,687,690],{"class":226,"line":423},[224,674,426],{"class":234},[224,676,429],{"class":234},[224,678,447],{"class":446},[224,680,310],{"class":234},[224,682,440],{"class":238},[224,684,443],{"class":402},[224,686,406],{"class":238},[224,688,689],{"class":450},"2",[224,691,692],{"class":238},");\n",[224,694,695],{"class":226,"line":434},[224,696,394],{"emptyLinePlaceholder":393},[224,698,699,702,704,706,708,710],{"class":226,"line":456},[224,700,701],{"class":402},"  match",[224,703,406],{"class":238},[224,705,497],{"class":234},[224,707,440],{"class":238},[224,709,286],{"class":234},[224,711,712],{"class":238},"){\n",[224,714,715,718,721],{"class":226,"line":473},[224,716,717],{"class":230},"    case",[224,719,720],{"class":234}," int",[224,722,723],{"class":238},":\n",[224,725,726],{"class":226,"line":478},[224,727,728],{"class":556},"      # use data.i\n",[224,730,731,734],{"class":226,"line":489},[224,732,733],{"class":230},"    break",[224,735,324],{"class":238},[224,737,739,741,744],{"class":226,"line":738},14,[224,740,717],{"class":230},[224,742,743],{"class":234}," float",[224,745,723],{"class":238},[224,747,749],{"class":226,"line":748},15,[224,750,751],{"class":556},"      # use data.f\n",[224,753,755,757],{"class":226,"line":754},16,[224,756,733],{"class":230},[224,758,324],{"class":238},[224,760,762],{"class":226,"line":761},17,[224,763,764],{"class":238},"  }\n",[224,766,768],{"class":226,"line":767},18,[224,769,394],{"emptyLinePlaceholder":393},[224,771,773,775,777],{"class":226,"line":772},19,[224,774,481],{"class":230},[224,776,484],{"class":450},[224,778,324],{"class":238},[224,780,782],{"class":226,"line":781},20,[224,783,280],{"class":238},[209,785,786,787,790],{},"When you construct a union, a list of tags will be created to represent all the existing types in the union. And you can also use ",[221,788,789],{},"match"," to handle all the defined types.",[792,793,794],"warning",{},"This page is not completed, will be updated later.",[796,797,798],"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 .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 .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 pre.shiki code .seacL, html code.shiki .seacL{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0A1A7;--shiki-default-font-style:italic;--shiki-dark:#7F848E;--shiki-dark-font-style:italic}",{"title":219,"searchDepth":242,"depth":242,"links":800},[801,802,803],{"id":206,"depth":242,"text":207},{"id":354,"depth":242,"text":355},{"id":286,"depth":242,"text":606},"Different types live in the same place.","md",null,{},{"icon":24},{"title":99,"description":804},"6LAJFZ4fAGozyGUixtbiKvXfdv6aBn9O-aaM6SIk46E",[812,814],{"title":95,"path":96,"stem":97,"description":813,"icon":24,"children":-1},"A user-defined type that improve readability.",{"title":103,"path":104,"stem":105,"description":815,"icon":24,"children":-1},"Sharing is caring!",1774971229829]