[{"data":1,"prerenderedAt":526},["ShallowReactive",2],{"navigation":3,"-guide-functions-main-function":239,"-guide-functions-main-function-surround":523},[4,159],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"指南","\u002Fguide","00.guide\u002F00.index",[9,11,16,21,53,84,116,142],{"title":5,"path":6,"stem":7,"icon":10},"lucide:book",{"title":12,"path":13,"stem":14,"icon":15},"快速开始","\u002Fguide\u002Fgetting-started","00.guide\u002F01.getting-started","lucide:rocket",{"title":17,"path":18,"stem":19,"icon":20},"基础语法","\u002Fguide\u002Fbasic-syntax","00.guide\u002F02.basic-syntax","lucide:code-2",{"title":22,"path":23,"stem":24,"children":25,"icon":27},"数据类型","\u002Fguide\u002Fdata-types","00.guide\u002F03.data-types\u002F00.index",[26,28,33,38,43,48],{"title":22,"path":23,"stem":24,"icon":27},"lucide:database",{"title":29,"path":30,"stem":31,"icon":32},"基本类型","\u002Fguide\u002Fdata-types\u002Fbasic_types","00.guide\u002F03.data-types\u002F01.basic_types","lucide:type",{"title":34,"path":35,"stem":36,"icon":37},"复合类型","\u002Fguide\u002Fdata-types\u002Fcomposite_types","00.guide\u002F03.data-types\u002F02.composite_types","lucide:layers",{"title":39,"path":40,"stem":41,"icon":42},"类型推导","\u002Fguide\u002Fdata-types\u002Ftype_inference","00.guide\u002F03.data-types\u002F03.type_inference","lucide:brain-circuit",{"title":44,"path":45,"stem":46,"icon":47},"结构体","\u002Fguide\u002Fdata-types\u002Fstruct","00.guide\u002F03.data-types\u002F04.struct","lucide:box-select",{"title":49,"path":50,"stem":51,"icon":52},"内建类型表面","\u002Fguide\u002Fdata-types\u002Fbuilt-in-surface","00.guide\u002F03.data-types\u002F05.built-in-surface","lucide:wrench",{"title":54,"path":55,"stem":56,"children":57,"icon":59},"流程控制","\u002Fguide\u002Fcontrol-flow","00.guide\u002F04.control-flow\u002F00.index",[58,60,64,69,74,79],{"title":54,"path":55,"stem":56,"icon":59},"lucide:git-branch",{"title":61,"path":62,"stem":63,"icon":59},"if 表达式","\u002Fguide\u002Fcontrol-flow\u002Fif-expressions","00.guide\u002F04.control-flow\u002F01.if-expressions",{"title":65,"path":66,"stem":67,"icon":68},"for 循环","\u002Fguide\u002Fcontrol-flow\u002Ffor-loops","00.guide\u002F04.control-flow\u002F02.for-loops","lucide:repeat",{"title":70,"path":71,"stem":72,"icon":73},"break 和 continue","\u002Fguide\u002Fcontrol-flow\u002Fbreak-continue","00.guide\u002F04.control-flow\u002F03.break-continue","lucide:skip-forward",{"title":75,"path":76,"stem":77,"icon":78},"return","\u002Fguide\u002Fcontrol-flow\u002Freturn","00.guide\u002F04.control-flow\u002F04.return","lucide:corner-up-left",{"title":80,"path":81,"stem":82,"icon":83},"注意事项","\u002Fguide\u002Fcontrol-flow\u002Fnotes","00.guide\u002F04.control-flow\u002F05.notes","lucide:alert-triangle",{"title":85,"path":86,"stem":87,"children":88,"icon":90},"函数","\u002Fguide\u002Ffunctions","00.guide\u002F05.functions\u002F00.index",[89,91,96,101,106,111],{"title":85,"path":86,"stem":87,"icon":90},"lucide:braces",{"title":92,"path":93,"stem":94,"icon":95},"基础函数","\u002Fguide\u002Ffunctions\u002Fbasic-functions","00.guide\u002F05.functions\u002F01.basic-functions","lucide:function-square",{"title":97,"path":98,"stem":99,"icon":100},"参数与默认值","\u002Fguide\u002Ffunctions\u002Fadvanced-parameters","00.guide\u002F05.functions\u002F02.advanced-parameters","lucide:settings-2",{"title":102,"path":103,"stem":104,"icon":105},"匿名函数","\u002Fguide\u002Ffunctions\u002Fclosures","00.guide\u002F05.functions\u002F03.closures","lucide:curly-braces",{"title":107,"path":108,"stem":109,"icon":110},"内建函数","\u002Fguide\u002Ffunctions\u002Fbuiltin-functions","00.guide\u002F05.functions\u002F04.builtin-functions","lucide:box",{"title":112,"path":113,"stem":114,"icon":115},"main 函数","\u002Fguide\u002Ffunctions\u002Fmain-function","00.guide\u002F05.functions\u002F05.main-function","lucide:play",{"title":117,"path":118,"stem":119,"children":120,"icon":37},"模块化","\u002Fguide\u002Fmodules","00.guide\u002F06.modules\u002F00.index",[121,122,127,132,137],{"title":117,"path":118,"stem":119,"icon":37},{"title":123,"path":124,"stem":125,"icon":126},"导出","\u002Fguide\u002Fmodules\u002Fexport","00.guide\u002F06.modules\u002F01.export","lucide:upload",{"title":128,"path":129,"stem":130,"icon":131},"导入","\u002Fguide\u002Fmodules\u002Fimport","00.guide\u002F06.modules\u002F02.import","lucide:download",{"title":133,"path":134,"stem":135,"icon":136},"最佳实践","\u002Fguide\u002Fmodules\u002Fbest-practices","00.guide\u002F06.modules\u002F03.best-practices","lucide:check-circle-2",{"title":138,"path":139,"stem":140,"icon":141},"完整示例","\u002Fguide\u002Fmodules\u002Fcomplete-example","00.guide\u002F06.modules\u002F04.complete-example","lucide:file-code-2",{"title":143,"path":144,"stem":145,"children":146,"icon":148},"高级特性概述","\u002Fguide\u002Fadvanced","00.guide\u002F07.advanced\u002F00.index",[147,149,154],{"title":143,"path":144,"stem":145,"icon":148},"lucide:zap",{"title":150,"path":151,"stem":152,"icon":153},"泛型","\u002Fguide\u002Fadvanced\u002Fgenerics","00.guide\u002F07.advanced\u002F05.generics","lucide:git-merge",{"title":155,"path":156,"stem":157,"icon":158},"类型转换","\u002Fguide\u002Fadvanced\u002Ftype-conversion","00.guide\u002F07.advanced\u002F06.type-conversion","lucide:refresh-cw",{"title":160,"path":161,"stem":162,"children":163,"icon":15},"设计","\u002Fdesign","01.design\u002F00.index",[164,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,232,235],{"title":160,"path":161,"stem":162,"icon":15},{"title":166,"path":167,"stem":168},"CST 特性","\u002Fdesign\u002Fcst-features","01.design\u002F01.cst-features",{"title":170,"path":171,"stem":172},"注释关联规则","\u002Fdesign\u002Fcomment-association","01.design\u002F02.comment-association",{"title":174,"path":175,"stem":176},"错误处理","\u002Fdesign\u002Ferror-handling","01.design\u002F03.error-handling",{"title":178,"path":179,"stem":180},"代码优化","\u002Fdesign\u002Foptimization","01.design\u002F04.optimization",{"title":182,"path":183,"stem":184},"注释保留","\u002Fdesign\u002Fcomments","01.design\u002F05.comments",{"title":186,"path":187,"stem":188},"结构体设计","\u002Fdesign\u002Fstruct-design","01.design\u002F06.struct-design",{"title":190,"path":191,"stem":192},"comparable 约束设计","\u002Fdesign\u002Fcomparable-constraint","01.design\u002F07.comparable-constraint",{"title":194,"path":195,"stem":196},"文档分层约定","\u002Fdesign\u002Fdocumentation-convention","01.design\u002F08.documentation-convention",{"title":198,"path":199,"stem":200},"类型系统总纲","\u002Fdesign\u002Ftype-system","01.design\u002F09.type-system",{"title":202,"path":203,"stem":204},"泛型系统","\u002Fdesign\u002Fgenerics-system","01.design\u002F10.generics-system",{"title":206,"path":207,"stem":208},"值语义与共享语义","\u002Fdesign\u002Fvalue-and-sharing-semantics","01.design\u002F11.value-and-sharing-semantics",{"title":210,"path":211,"stem":212},"函数与调用","\u002Fdesign\u002Ffunctions-and-calls","01.design\u002F12.functions-and-calls",{"title":214,"path":215,"stem":216},"表达式与语句","\u002Fdesign\u002Fexpressions-and-statements","01.design\u002F13.expressions-and-statements",{"title":218,"path":219,"stem":220},"模块系统","\u002Fdesign\u002Fmodule-system","01.design\u002F14.module-system",{"title":222,"path":223,"stem":224},"渲染内建","\u002Fdesign\u002Frender-intrinsics","01.design\u002F15.render-intrinsics",{"title":226,"path":227,"stem":228},"Any 设计","\u002Fdesign\u002Fany-design","01.design\u002F16.any-design",{"title":49,"path":230,"stem":231},"\u002Fdesign\u002Fbuilt-in-types-surface","01.design\u002F17.built-in-types-surface",{"title":107,"path":233,"stem":234},"\u002Fdesign\u002Fbuilt-in-functions","01.design\u002F18.built-in-functions",{"title":236,"path":237,"stem":238},"内建结构体与运行时类型","\u002Fdesign\u002Fbuilt-in-structs-and-runtime-types","01.design\u002F19.built-in-structs-and-runtime-types",{"id":240,"title":112,"body":241,"description":308,"extension":518,"meta":519,"navigation":520,"path":113,"seo":521,"stem":114,"__hash__":522},"content\u002F00.guide\u002F05.functions\u002F05.main-function.md",{"type":242,"value":243,"toc":512,"icon":115},"minimark",[244,256,260,299,302,331,336,339,358,376,379,382,438,448,472,476,482,502,508],[245,246,247,251,252,255],"p",{},[248,249,250],"code",{},"main"," 是 Dujie 的入口函数，返回类型必须是裸 ",[248,253,254],{},"widget","。",[257,258,259],"h2",{"id":259},"当前规则",[261,262,263,269,274,282,287,294],"ul",{},[264,265,266,268],"li",{},[248,267,250],{}," 必须是模块顶层函数",[264,270,271,272],{},"一个模块内最多只能有一个 ",[248,273,250],{},[264,275,276,278,279],{},[248,277,250],{}," 不需要 ",[248,280,281],{},"export",[264,283,284,286],{},[248,285,250],{}," 不能与其他顶层符号重名",[264,288,289,291,292],{},[248,290,250],{}," 的返回类型必须显式写成 ",[248,293,254],{},[264,295,296,298],{},[248,297,250],{}," 不能是泛型函数",[257,300,301],{"id":301},"参数写法",[303,304,309],"pre",{"className":305,"code":306,"language":307,"meta":308,"style":308},"language-dj shiki shiki-themes github-light github-dark github-dark","func main() -> widget {\n    text(\"Hello, World!\")\n}\n","dj","",[248,310,311,319,325],{"__ignoreMap":308},[312,313,316],"span",{"class":314,"line":315},"line",1,[312,317,318],{},"func main() -> widget {\n",[312,320,322],{"class":314,"line":321},2,[312,323,324],{},"    text(\"Hello, World!\")\n",[312,326,328],{"class":314,"line":327},3,[312,329,330],{},"}\n",[245,332,333,335],{},[248,334,250],{}," 的参数按普通 Dujie 函数规则书写，不再限制成固定几种入口形态。",[245,337,338],{},"例如：",[303,340,342],{"className":305,"code":341,"language":307,"meta":308,"style":308},"func main(title: string, count: opt\u003Cint>) -> widget {\n    text(`${title}:${count}`)\n}\n",[248,343,344,349,354],{"__ignoreMap":308},[312,345,346],{"class":314,"line":315},[312,347,348],{},"func main(title: string, count: opt\u003Cint>) -> widget {\n",[312,350,351],{"class":314,"line":321},[312,352,353],{},"    text(`${title}:${count}`)\n",[312,355,356],{"class":314,"line":327},[312,357,330],{},[303,359,361],{"className":305,"code":360,"language":307,"meta":308,"style":308},"func main({ title: string, count: int = 0 }) -> widget {\n    text(`${title}:${count}`)\n}\n",[248,362,363,368,372],{"__ignoreMap":308},[312,364,365],{"class":314,"line":315},[312,366,367],{},"func main({ title: string, count: int = 0 }) -> widget {\n",[312,369,370],{"class":314,"line":321},[312,371,353],{},[312,373,374],{"class":314,"line":327},[312,375,330],{},[257,377,378],{"id":378},"动态入口示例",[245,380,381],{},"如果用户希望自己接动态数据，也可以直接写：",[303,383,385],{"className":305,"code":384,"language":307,"meta":308,"style":308},"func main(props: map\u003Cstring, any>) -> widget {\n    let title = props[\"title\"];\n\n    if title is string(s) {\n        text(s)\n    } else {\n        panic(\"title must be string\")\n    }\n}\n",[248,386,387,392,397,403,409,415,421,427,433],{"__ignoreMap":308},[312,388,389],{"class":314,"line":315},[312,390,391],{},"func main(props: map\u003Cstring, any>) -> widget {\n",[312,393,394],{"class":314,"line":321},[312,395,396],{},"    let title = props[\"title\"];\n",[312,398,399],{"class":314,"line":327},[312,400,402],{"emptyLinePlaceholder":401},true,"\n",[312,404,406],{"class":314,"line":405},4,[312,407,408],{},"    if title is string(s) {\n",[312,410,412],{"class":314,"line":411},5,[312,413,414],{},"        text(s)\n",[312,416,418],{"class":314,"line":417},6,[312,419,420],{},"    } else {\n",[312,422,424],{"class":314,"line":423},7,[312,425,426],{},"        panic(\"title must be string\")\n",[312,428,430],{"class":314,"line":429},8,[312,431,432],{},"    }\n",[312,434,436],{"class":314,"line":435},9,[312,437,330],{},[245,439,440,441,443,444,447],{},"当 ",[248,442,250],{}," 使用 ",[248,445,446],{},"map\u003Cstring, any>"," 时：",[261,449,450,459,465],{},[264,451,452,455,456],{},[248,453,454],{},"props[\"k\"]"," 的结果是 ",[248,457,458],{},"any",[264,460,461,462],{},"key 不存在时直接 ",[248,463,464],{},"panic",[264,466,467,468,471],{},"取出值后使用 ",[248,469,470],{},"is"," 做显式收窄",[257,473,475],{"id":474},"rust-侧入口适配","Rust 侧入口适配",[245,477,478,479,481],{},"语言层允许用户自由书写 ",[248,480,250],{}," 参数，但编译后的 Rust 侧入口需要与之匹配：",[261,483,484,487,490,499],{},[264,485,486],{},"位置参数按顺序暴露",[264,488,489],{},"具名参数可以映射为 Rust 结构体",[264,491,492,495,496],{},[248,493,494],{},"opt\u003CT>"," 映射为 ",[248,497,498],{},"Option\u003CT>",[264,500,501],{},"默认值由适配层补齐",[245,503,504,505,507],{},"哪个模块被当作应用入口，由构建或运行系统决定，不由 ",[248,506,281],{}," 决定。",[509,510,511],"style",{},"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);}",{"title":308,"searchDepth":321,"depth":321,"links":513},[514,515,516,517],{"id":259,"depth":321,"text":259},{"id":301,"depth":321,"text":301},{"id":378,"depth":321,"text":378},{"id":474,"depth":321,"text":475},"md",{"icon":115},{"icon":115},{"title":112,"description":308},"-g0dlcbwaOH0CbmBRec8m13DdTg6DXhkdWB54rTi7gs",[524,525],{"title":107,"path":108,"stem":109,"description":308,"icon":110,"children":-1},{"title":117,"path":118,"stem":119,"description":308,"icon":37,"children":-1},1776981318966]