[{"data":1,"prerenderedAt":1963},["ShallowReactive",2],{"navigation":3,"-design-expressions-and-statements":239,"-design-expressions-and-statements-surround":1960},[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":214,"body":241,"description":499,"extension":1955,"meta":1956,"navigation":1957,"path":215,"seo":1958,"stem":216,"__hash__":1959},"content\u002F01.design\u002F13.expressions-and-statements.md",{"type":242,"value":243,"toc":1898},"minimark",[244,248,252,283,286,290,317,323,327,362,366,395,398,420,423,450,453,458,490,493,516,521,557,560,567,583,587,592,595,618,621,638,641,669,672,689,692,707,710,743,745,766,771,776,797,799,820,825,830,833,854,860,875,878,900,903,906,909,912,932,935,946,952,975,979,989,991,1016,1019,1028,1040,1043,1060,1063,1100,1103,1108,1144,1148,1177,1180,1194,1197,1251,1255,1276,1283,1295,1301,1304,1323,1326,1336,1339,1357,1361,1366,1369,1387,1390,1393,1443,1446,1456,1478,1483,1501,1504,1535,1538,1565,1568,1574,1577,1589,1596,1600,1607,1626,1633,1645,1647,1661,1668,1676,1681,1686,1689,1708,1711,1727,1730,1733,1793,1796,1807,1810,1813,1816,1845,1851,1857,1881,1884,1894],[245,246,247],"p",{},"本文档收敛 Dujie 的字面量、控制流、运算、推导边界、语句模型和语言级错误行为。",[249,250,251],"h2",{"id":251},"总体原则",[253,254,255,259,266,277],"ul",{},[256,257,258],"li",{},"Dujie 采用表达式优先的风格",[256,260,261,265],{},[262,263,264],"code",{},"if"," 和 block 都可以作为表达式",[256,267,268,269,272,273,276],{},"赋值、",[262,270,271],{},"break","、",[262,274,275],{},"continue"," 属于语句，不参与普通表达式求值",[256,278,279,282],{},[262,280,281],{},"unit"," 是正式类型，用于表示“无值”",[249,284,285],{"id":285},"字面量",[287,288,289],"h3",{"id":289},"基础字面量",[253,291,292,297,302,307,312],{},[256,293,294],{},[262,295,296],{},"int",[256,298,299],{},[262,300,301],{},"float",[256,303,304],{},[262,305,306],{},"bool",[256,308,309],{},[262,310,311],{},"string",[256,313,314],{},[262,315,316],{},"rune",[245,318,319,320,322],{},"当前公开整数类型只有 ",[262,321,296],{},"。",[287,324,325],{"id":311},[262,326,311],{},[253,328,329,336,357],{},[256,330,331,332,335],{},"普通字符串使用 ",[262,333,334],{},"\"...\""," 表示",[256,337,338,339,272,342,272,345,272,348,272,351,272,354],{},"支持转义：",[262,340,341],{},"\\\\",[262,343,344],{},"\\\"",[262,346,347],{},"\\n",[262,349,350],{},"\\r",[262,352,353],{},"\\t",[262,355,356],{},"\\u{...}",[256,358,359,361],{},[262,360,311],{}," 是文本类型，不是字节数组",[287,363,364],{"id":316},[262,365,316],{},[253,367,368,377,392],{},[256,369,370,372,373,376],{},[262,371,316],{}," 使用 ",[262,374,375],{},"'a'"," 形式",[256,378,338,379,272,381,272,384,272,386,272,388,272,390],{},[262,380,341],{},[262,382,383],{},"\\'",[262,385,347],{},[262,387,350],{},[262,389,353],{},[262,391,356],{},[256,393,394],{},"转义展开后必须恰好表示一个字符，否则是词法错误",[287,396,397],{"id":397},"插值字符串",[253,399,400,406,412,417],{},[256,401,402,403],{},"插值字符串使用反引号：",[262,404,405],{},"`hello ${name}`",[256,407,408,409],{},"插值片段写作 ",[262,410,411],{},"${expr}",[256,413,414,415],{},"整体结果类型是 ",[262,416,311],{},[256,418,419],{},"插值允许任意类型",[245,421,422],{},"插值使用的是展示语义，不是序列化语义：",[253,424,425,428,434,444],{},[256,426,427],{},"基础类型按自然文本形式展示",[256,429,430,433],{},[262,431,432],{},"none"," 在插值上下文里等价于空字符串",[256,435,436,439,440,443],{},[262,437,438],{},"some(v)"," 等价于插入 ",[262,441,442],{},"v"," 的展示结果",[256,445,446,449],{},[262,447,448],{},"list \u002F map \u002F struct \u002F widget \u002F iter \u002F func"," 使用统一摘要展示，不展开结构",[249,451,452],{"id":452},"容器与聚合字面量",[287,454,456],{"id":455},"list",[262,457,455],{},[253,459,460,469,472,481],{},[256,461,462,463,272,466],{},"语法：",[262,464,465],{},"[]",[262,467,468],{},"[1, 2, 3]",[256,470,471],{},"元素必须同类型",[256,473,474,475,477,478,480],{},"不做 ",[262,476,296],{}," \u002F ",[262,479,301],{}," 混合推导",[256,482,483,486,487],{},[262,484,485],{},"T"," 可在上下文需要时提升到 ",[262,488,489],{},"opt\u003CT>",[245,491,492],{},"例如：",[494,495,500],"pre",{"className":496,"code":497,"language":498,"meta":499,"style":499},"language-dj shiki shiki-themes github-light github-dark github-dark","[1, 2, 3]\n[\"a\", none]\n","dj","",[262,501,502,510],{"__ignoreMap":499},[503,504,507],"span",{"class":505,"line":506},"line",1,[503,508,509],{},"[1, 2, 3]\n",[503,511,513],{"class":505,"line":512},2,[503,514,515],{},"[\"a\", none]\n",[287,517,519],{"id":518},"map",[262,520,518],{},[253,522,523,528,531,534],{},[256,524,462,525],{},[262,526,527],{},"{ \"a\": 1, \"b\": 2 }",[256,529,530],{},"key 必须同类型",[256,532,533],{},"value 必须同类型",[256,535,536,538,539],{},[262,537,518],{}," key 当前只允许：\n",[253,540,541,545,549,553],{},[256,542,543],{},[262,544,296],{},[256,546,547],{},[262,548,306],{},[256,550,551],{},[262,552,316],{},[256,554,555],{},[262,556,311],{},[245,558,559],{},"第一阶段不引入联合类型。",[287,561,563,566],{"id":562},"struct-构造",[262,564,565],{},"struct"," 构造",[253,568,569,574,577,580],{},[256,570,462,571],{},[262,572,573],{},"Person { name: \"snow\", age: 18 }",[256,575,576],{},"这是具名类型构造，不是匿名对象字面量",[256,578,579],{},"所有字段必须显式提供",[256,581,582],{},"未知字段、重复字段、缺字段都是编译错误",[249,584,585],{"id":565},[262,586,565],{},[245,588,589,591],{},[262,590,565],{}," 是名义类型，不是结构类型。",[245,593,594],{},"规则：",[253,596,597,600,606,609,612,615],{},[256,598,599],{},"只支持具名字段",[256,601,602,603],{},"字段声明写作 ",[262,604,605],{},"name: Type",[256,607,608],{},"不支持 tuple struct",[256,610,611],{},"不支持按数字索引访问",[256,613,614],{},"字段顺序不构成类型语义",[256,616,617],{},"第一阶段不支持字段默认值",[245,619,620],{},"类型兼容：",[253,622,623,629],{},[256,624,625,626,628],{},"两个 ",[262,627,565],{}," 即使字段完全一致，只要名字不同，就是不同类型",[256,630,631,632,634,635,637],{},"不支持 ",[262,633,565],{}," 和 ",[262,636,518],{}," 之间自动互转",[245,639,640],{},"字段类型：",[253,642,643,646,652,657,662],{},[256,644,645],{},"可包含基础类型",[256,647,648,649],{},"可包含 ",[262,650,651],{},"list \u002F map \u002F opt",[256,653,654,655],{},"可包含其他 ",[262,656,565],{},[256,658,648,659],{},[262,660,661],{},"widget",[256,663,664,665,668],{},"第一阶段不建议 ",[262,666,667],{},"iter\u003CT>"," 作为字段类型",[245,670,671],{},"递归：",[253,673,674,686],{},[256,675,676,677,272,679,272,682,685],{},"允许通过 ",[262,678,489],{},[262,680,681],{},"list\u003CT>",[262,683,684],{},"map\u003CK, T>"," 间接递归",[256,687,688],{},"不允许字段直接按值引用自身类型",[287,690,691],{"id":691},"多行格式与尾逗号",[253,693,694,701],{},[256,695,696,697,700],{},"单行 ",[262,698,699],{},"list \u002F map \u002F struct"," 可带尾逗号，也可不带",[256,702,703,704,706],{},"多行 ",[262,705,699],{}," 必须带尾逗号",[249,708,709],{"id":709},"类型推导边界",[253,711,712,722,732,737],{},[256,713,714,717,718,721],{},[262,715,716],{},"let x = expr"," 只在 ",[262,719,720],{},"expr"," 类型唯一时允许推导",[256,723,724,272,726,272,729,731],{},[262,725,465],{},[262,727,728],{},"{}",[262,730,432],{}," 不能独立推导类型",[256,733,734,736],{},[262,735,264],{}," 两个分支类型必须一致",[256,738,739,740,742],{},"空容器和 ",[262,741,432],{}," 需要依赖上下文或显式标注",[245,744,492],{},[494,746,748],{"className":496,"code":747,"language":498,"meta":499,"style":499},"let a = 1\nlet b: list\u003Cint> = []\nlet c: opt\u003Cstring> = none\n",[262,749,750,755,760],{"__ignoreMap":499},[503,751,752],{"class":505,"line":506},[503,753,754],{},"let a = 1\n",[503,756,757],{"class":505,"line":512},[503,758,759],{},"let b: list\u003Cint> = []\n",[503,761,763],{"class":505,"line":762},3,[503,764,765],{},"let c: opt\u003Cstring> = none\n",[249,767,769],{"id":768},"optt",[262,770,489],{},[245,772,773,775],{},[262,774,489],{}," 的语言级构造和判定：",[253,777,778,782,787,792],{},[256,779,780],{},[262,781,432],{},[256,783,784],{},[262,785,786],{},"some(x)",[256,788,789],{},[262,790,791],{},"x is none",[256,793,794],{},[262,795,796],{},"x is some(v)",[245,798,594],{},[253,800,801,806,812],{},[256,802,803,805],{},[262,804,489],{}," 不支持比较运算",[256,807,808,809,811],{},"参数类型为 ",[262,810,489],{}," 时允许省略",[256,813,814,816,817],{},[262,815,485],{}," 可自动提升为 ",[262,818,819],{},"some(T)",[249,821,823],{"id":822},"any",[262,824,822],{},[245,826,827,829],{},[262,828,822],{}," 是边界类型，不是万能类型。",[245,831,832],{},"当前语义：",[253,834,835,841,847],{},[256,836,837,840],{},[262,838,839],{},"T -> any"," 允许",[256,842,843,846],{},[262,844,845],{},"any -> T"," 不做隐式恢复",[256,848,849,850,853],{},"第一阶段使用 ",[262,851,852],{},"is"," 做显式收窄",[245,855,856,857,859],{},"支持的最小 ",[262,858,852],{}," 形式：",[494,861,863],{"className":496,"code":862,"language":498,"meta":499,"style":499},"x is T\nx is T(v)\n",[262,864,865,870],{"__ignoreMap":499},[503,866,867],{"class":505,"line":506},[503,868,869],{},"x is T\n",[503,871,872],{"class":505,"line":512},[503,873,874],{},"x is T(v)\n",[245,876,877],{},"当前稳定支持的收窄目标首先是基础类型：",[253,879,880,884,888,892,896],{},[256,881,882],{},[262,883,296],{},[256,885,886],{},[262,887,301],{},[256,889,890],{},[262,891,306],{},[256,893,894],{},[262,895,316],{},[256,897,898],{},[262,899,311],{},[249,901,902],{"id":902},"表达式",[287,904,905],{"id":905},"匿名函数表达式",[245,907,908],{},"匿名函数是表达式。",[245,910,911],{},"形式与普通函数相同，只是没有名字：",[494,913,915],{"className":496,"code":914,"language":498,"meta":499,"style":499},"func(x: int) -> string {\n    `#${x}`\n}\n",[262,916,917,922,927],{"__ignoreMap":499},[503,918,919],{"class":505,"line":506},[503,920,921],{},"func(x: int) -> string {\n",[503,923,924],{"class":505,"line":512},[503,925,926],{},"    `#${x}`\n",[503,928,929],{"class":505,"line":762},[503,930,931],{},"}\n",[245,933,934],{},"当前边界：",[253,936,937,940,943],{},[256,938,939],{},"允许捕获外部变量",[256,941,942],{},"主要用于目标参数类型已知的回调位置",[256,944,945],{},"不作为完整一等函数值系统单独展开",[287,947,949,951],{"id":948},"if-表达式",[262,950,264],{}," 表达式",[253,953,954,959,967,972],{},[256,955,956,958],{},[262,957,264],{}," 是表达式",[256,960,961,634,963,966],{},[262,962,264],{},[262,964,965],{},"else"," 都必须存在",[256,968,969,970],{},"条件必须是 ",[262,971,306],{},[256,973,974],{},"两个分支结果类型必须一致",[287,976,978],{"id":977},"block-表达式","block 表达式",[253,980,981,984],{},[256,982,983],{},"block 的结果类型由尾表达式决定",[256,985,986,987],{},"如果没有尾表达式，则结果类型为 ",[262,988,281],{},[245,990,492],{},[494,992,994],{"className":496,"code":993,"language":498,"meta":499,"style":499},"let x = {\n    let a = 1;\n    a + 1\n}\n",[262,995,996,1001,1006,1011],{"__ignoreMap":499},[503,997,998],{"class":505,"line":506},[503,999,1000],{},"let x = {\n",[503,1002,1003],{"class":505,"line":512},[503,1004,1005],{},"    let a = 1;\n",[503,1007,1008],{"class":505,"line":762},[503,1009,1010],{},"    a + 1\n",[503,1012,1014],{"class":505,"line":1013},4,[503,1015,931],{},[249,1017,1018],{"id":1018},"语句",[287,1020,1022,477,1025],{"id":1021},"let-var",[262,1023,1024],{},"let",[262,1026,1027],{},"var",[253,1029,1030,1035],{},[256,1031,1032,1034],{},[262,1033,1024],{},"：不可变绑定",[256,1036,1037,1039],{},[262,1038,1027],{},"：可变绑定",[245,1041,1042],{},"绑定可变性与更新规则：",[253,1044,1045,1050,1055],{},[256,1046,1047,1049],{},[262,1048,1024],{}," 绑定不能重新赋值",[256,1051,1052,1054],{},[262,1053,1024],{}," 绑定也不能做原地更新",[256,1056,1057,1059],{},[262,1058,1027],{}," 绑定允许重新赋值和原地更新",[287,1061,1062],{"id":1062},"赋值",[253,1064,1065,1071,1074],{},[256,1066,1067,1070],{},[262,1068,1069],{},"="," 是语句，不是表达式",[256,1072,1073],{},"左侧必须是可写左值",[256,1075,1076,1077],{},"当前合法左值：\n",[253,1078,1079,1085,1090,1095],{},[256,1080,1081,1082],{},"变量名 ",[262,1083,1084],{},"x",[256,1086,1087],{},[262,1088,1089],{},"xs[i]",[256,1091,1092],{},[262,1093,1094],{},"m[k]",[256,1096,1097],{},[262,1098,1099],{},"p.name",[287,1101,1102],{"id":1102},"容器更新",[245,1104,1105,1107],{},[262,1106,455],{}," 支持：",[253,1109,1110,1114,1119,1124,1129,1134,1139],{},[256,1111,1112],{},[262,1113,1089],{},[256,1115,1116],{},[262,1117,1118],{},"xs[i] = v",[256,1120,1121],{},[262,1122,1123],{},"push(v)",[256,1125,1126],{},[262,1127,1128],{},"pop()",[256,1130,1131],{},[262,1132,1133],{},"remove(i)",[256,1135,1136],{},[262,1137,1138],{},"clear()",[256,1140,1141],{},[262,1142,1143],{},"len()",[245,1145,1146,1107],{},[262,1147,518],{},[253,1149,1150,1154,1159,1164,1168,1173],{},[256,1151,1152],{},[262,1153,1094],{},[256,1155,1156],{},[262,1157,1158],{},"m[k] = v",[256,1160,1161],{},[262,1162,1163],{},"remove(k)",[256,1165,1166],{},[262,1167,1138],{},[256,1169,1170],{},[262,1171,1172],{},"contains(k)",[256,1174,1175],{},[262,1176,1143],{},[245,1178,1179],{},"统一规则：",[253,1181,1182,1188,1191],{},[256,1183,1184,1185,1187],{},"更新操作只能作用在 ",[262,1186,1027],{}," 绑定的可写左值上",[256,1189,1190],{},"临时值不能更新",[256,1192,1193],{},"会修改接收者的方法只能对可写目标调用",[245,1195,1196],{},"运行时行为：",[253,1198,1199,1208,1215,1223,1230,1238,1244],{},[256,1200,1201,1204,1205],{},[262,1202,1203],{},"list[i]"," 越界时 ",[262,1206,1207],{},"panic",[256,1209,1210,1204,1213],{},[262,1211,1212],{},"list[i] = v",[262,1214,1207],{},[256,1216,1217,1220,1221],{},[262,1218,1219],{},"list.pop()"," 对空列表调用时 ",[262,1222,1207],{},[256,1224,1225,1204,1228],{},[262,1226,1227],{},"list.remove(i)",[262,1229,1207],{},[256,1231,1232,1235,1236],{},[262,1233,1234],{},"map[k]"," 缺 key 时 ",[262,1237,1207],{},[256,1239,1240,1243],{},[262,1241,1242],{},"map[k] = v"," 缺 key 时直接插入",[256,1245,1246,1235,1249],{},[262,1247,1248],{},"map.remove(k)",[262,1250,1207],{},[287,1252,1253],{"id":75},[262,1254,75],{},[253,1256,1257,1260,1268],{},[256,1258,1259],{},"返回类型必须与函数声明一致",[256,1261,1262,1264,1265],{},[262,1263,281],{}," 函数可写 ",[262,1266,1267],{},"return;",[256,1269,1270,1271,1273,1274],{},"非 ",[262,1272,281],{}," 函数不能写裸 ",[262,1275,1267],{},[287,1277,1279,477,1281],{"id":1278},"break-continue",[262,1280,271],{},[262,1282,275],{},[253,1284,1285,1288],{},[256,1286,1287],{},"都是语句，不是表达式",[256,1289,1290,1291,1294],{},"只允许出现在 ",[262,1292,1293],{},"for"," 循环体中",[287,1296,1298],{"id":1297},"for-in",[262,1299,1300],{},"for in",[245,1302,1303],{},"形式：",[494,1305,1307],{"className":496,"code":1306,"language":498,"meta":499,"style":499},"for x in expr {\n    ...\n}\n",[262,1308,1309,1314,1319],{"__ignoreMap":499},[503,1310,1311],{"class":505,"line":506},[503,1312,1313],{},"for x in expr {\n",[503,1315,1316],{"class":505,"line":512},[503,1317,1318],{},"    ...\n",[503,1320,1321],{"class":505,"line":762},[503,1322,931],{},[245,1324,1325],{},"当前可迭代类型：",[253,1327,1328,1332],{},[256,1329,1330],{},[262,1331,681],{},[256,1333,1334],{},[262,1335,667],{},[245,1337,1338],{},"当前不支持：",[253,1340,1341,1346,1351,1354],{},[256,1342,1343],{},[262,1344,1345],{},"for (i, x) in xs",[256,1347,1348],{},[262,1349,1350],{},"for (k, v) in map",[256,1352,1353],{},"字符串迭代",[256,1355,1356],{},"解构绑定",[249,1358,1359],{"id":1207},[262,1360,1207],{},[245,1362,1363,1365],{},[262,1364,1207],{}," 是内建能力，用于主动中止执行。",[245,1367,1368],{},"当前规则：",[253,1370,1371,1376,1381,1384],{},[256,1372,1303,1373],{},[262,1374,1375],{},"panic(message: string)",[256,1377,1378,1379],{},"参数只接受 ",[262,1380,311],{},[256,1382,1383],{},"它不会正常返回",[256,1385,1386],{},"在类型检查上，允许出现在任意需要值的位置",[249,1388,1389],{"id":1389},"运算",[287,1391,1392],{"id":1392},"算术",[253,1394,1395,1401,1408,1413,1418,1426,1431,1436],{},[256,1396,1397,1400],{},[262,1398,1399],{},"+ - * \u002F %"," 只对数值类型开放",[256,1402,631,1403,477,1405,1407],{},[262,1404,296],{},[262,1406,301],{}," 混合运算",[256,1409,1410],{},[262,1411,1412],{},"int op int -> int",[256,1414,1415],{},[262,1416,1417],{},"float op float -> float",[256,1419,1420,1423,1424],{},[262,1421,1422],{},"%"," 只支持 ",[262,1425,296],{},[256,1427,1428],{},[262,1429,1430],{},"int \u002F int -> int",[256,1432,1433],{},[262,1434,1435],{},"float \u002F float -> float",[256,1437,1438,1439,634,1441],{},"一元负号支持 ",[262,1440,296],{},[262,1442,301],{},[287,1444,1445],{"id":1445},"比较",[245,1447,1448,1449,477,1452,1455],{},"支持 ",[262,1450,1451],{},"==",[262,1453,1454],{},"!=","：",[253,1457,1458,1462,1466,1470,1474],{},[256,1459,1460],{},[262,1461,296],{},[256,1463,1464],{},[262,1465,301],{},[256,1467,1468],{},[262,1469,306],{},[256,1471,1472],{},[262,1473,316],{},[256,1475,1476],{},[262,1477,311],{},[245,1479,1448,1480,1455],{},[262,1481,1482],{},"\u003C \u003C= > >=",[253,1484,1485,1489,1493,1497],{},[256,1486,1487],{},[262,1488,296],{},[256,1490,1491],{},[262,1492,301],{},[256,1494,1495],{},[262,1496,316],{},[256,1498,1499],{},[262,1500,311],{},[245,1502,1503],{},"不支持比较：",[253,1505,1506,1510,1514,1518,1522,1527,1531],{},[256,1507,1508],{},[262,1509,489],{},[256,1511,1512],{},[262,1513,565],{},[256,1515,1516],{},[262,1517,455],{},[256,1519,1520],{},[262,1521,518],{},[256,1523,1524],{},[262,1525,1526],{},"iter",[256,1528,1529],{},[262,1530,661],{},[256,1532,1533],{},[262,1534,822],{},[287,1536,1537],{"id":1537},"逻辑",[253,1539,1540,1548,1558],{},[256,1541,1542,1545,1546],{},[262,1543,1544],{},"!"," 只接受 ",[262,1547,306],{},[256,1549,1550,634,1553,1545,1556],{},[262,1551,1552],{},"&&",[262,1554,1555],{},"||",[262,1557,306],{},[256,1559,1560,477,1562,1564],{},[262,1561,1552],{},[262,1563,1555],{}," 使用短路语义",[287,1566,1567],{"id":1567},"显式转换",[245,1569,1570,1571,322],{},"转换语法采用 ",[262,1572,1573],{},"Type(expr)",[245,1575,1576],{},"第一阶段只支持：",[253,1578,1579,1584],{},[256,1580,1581],{},[262,1582,1583],{},"float(int_expr)",[256,1585,1586],{},[262,1587,1588],{},"int(float_expr)",[245,1590,1591,1592,1595],{},"其中 ",[262,1593,1594],{},"float -> int"," 按向零截断处理。",[249,1597,1599],{"id":1598},"成员访问下标与调用","成员访问、下标与调用",[287,1601,1603,1604],{"id":1602},"成员访问-xy","成员访问 ",[262,1605,1606],{},"x.y",[253,1608,1609,1615,1620],{},[256,1610,1611,1612,1614],{},"只对 ",[262,1613,565],{}," 和语言内建对象开放",[256,1616,1617,1619],{},[262,1618,565],{}," 字段不存在时，编译错误",[256,1621,1622,1623,1625],{},"第一阶段不支持 ",[262,1624,518],{}," 的点访问",[287,1627,1629,1630],{"id":1628},"下标访问-xy","下标访问 ",[262,1631,1632],{},"x[y]",[253,1634,1635,1640],{},[256,1636,1637],{},[262,1638,1639],{},"list\u003CT>[int] -> T",[256,1641,1642],{},[262,1643,1644],{},"map\u003CK, V>[K] -> V",[245,1646,1196],{},[253,1648,1649,1655],{},[256,1650,1651,1204,1653],{},[262,1652,455],{},[262,1654,1207],{},[256,1656,1657,1235,1659],{},[262,1658,518],{},[262,1660,1207],{},[287,1662,1664,1665],{"id":1663},"调用-f","调用 ",[262,1666,1667],{},"f(...)",[253,1669,1670,1673],{},[256,1671,1672],{},"调用结果类型由函数声明返回类型决定",[256,1674,1675],{},"参数匹配规则见《函数与调用》",[249,1677,1679],{"id":1678},"itert",[262,1680,667],{},[245,1682,1683,1685],{},[262,1684,667],{}," 是遍历用的中间类型，不是常规稳定容器。",[245,1687,1688],{},"允许：",[253,1690,1691,1694,1699],{},[256,1692,1693],{},"作为函数参数或返回值",[256,1695,1696,1697],{},"用于 ",[262,1698,1300],{},[256,1700,1701,1702,1705,1706],{},"通过 ",[262,1703,1704],{},"collect()"," 显式收集为 ",[262,1707,681],{},[245,1709,1710],{},"当前核心操作：",[253,1712,1713,1717,1722],{},[256,1714,1715],{},[262,1716,518],{},[256,1718,1719],{},[262,1720,1721],{},"filter",[256,1723,1724],{},[262,1725,1726],{},"collect",[249,1728,1729],{"id":1729},"运算符优先级",[245,1731,1732],{},"从高到低：",[1734,1735,1737,1747,1756,1762,1768,1773,1779,1784,1789],"steps",{"level":1736},"4",[1738,1739,1740,1741,272,1743,272,1745],"h4",{},"后缀：",[262,1742,1606],{},[262,1744,1632],{},[262,1746,1667],{},[1738,1748,1749,1750,272,1753],{},"一元：",[262,1751,1752],{},"-x",[262,1754,1755],{},"!x",[1738,1757,1758,1759],{},"乘法：",[262,1760,1761],{},"* \u002F %",[1738,1763,1764,1765],{},"加法：",[262,1766,1767],{},"+ -",[1738,1769,1770,1771],{},"比较：",[262,1772,1482],{},[1738,1774,1775,1776],{},"相等：",[262,1777,1778],{},"== !=",[1738,1780,1781,1782],{},"逻辑与：",[262,1783,1552],{},[1738,1785,1786,1787],{},"逻辑或：",[262,1788,1555],{},[1738,1790,1791,951],{},[262,1792,264],{},[245,1794,1795],{},"约束：",[253,1797,1798,1801,1804],{},[256,1799,1800],{},"不支持链式比较",[256,1802,1803],{},"赋值不进入普通表达式优先级体系",[256,1805,1806],{},"括号可显式改变优先级",[249,1808,1809],{"id":1809},"语言级错误模型",[287,1811,1812],{"id":1812},"编译错误",[245,1814,1815],{},"能在编译期确定的问题直接报错，例如：",[253,1817,1818,1821,1824,1827,1833,1836,1842],{},[256,1819,1820],{},"类型不匹配",[256,1822,1823],{},"未知变量、字段、导入符号",[256,1825,1826],{},"调用参数错误",[256,1828,1829,1830,1832],{},"对 ",[262,1831,1024],{}," 做更新",[256,1834,1835],{},"非法左值赋值",[256,1837,1838,1841],{},[262,1839,1840],{},"break \u002F continue"," 出现在循环外",[256,1843,1844],{},"非法字面量和非法转义",[287,1846,1848,1849],{"id":1847},"运行时-panic","运行时 ",[262,1850,1207],{},[245,1852,1853,1854,1856],{},"依赖运行时值的问题进入 ",[262,1855,1207],{},"，例如：",[253,1858,1859,1864,1869,1875],{},[256,1860,1861,1863],{},[262,1862,1234],{}," 缺 key",[256,1865,1866,1868],{},[262,1867,1203],{}," 越界",[256,1870,1871,1872],{},"空列表 ",[262,1873,1874],{},"pop",[256,1876,1877,1878],{},"用户显式调用 ",[262,1879,1880],{},"panic(\"...\")",[245,1882,1883],{},"总原则：",[253,1885,1886,1889],{},[256,1887,1888],{},"能在编译期确定的问题，不留到运行时",[256,1890,1891,1892],{},"只有依赖运行时具体值的问题，才进入 ",[262,1893,1207],{},[1895,1896,1897],"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":499,"searchDepth":512,"depth":512,"links":1899},[1900,1901,1907,1913,1916,1917,1918,1919,1924,1933,1934,1940,1948,1949,1950],{"id":251,"depth":512,"text":251},{"id":285,"depth":512,"text":285,"children":1902},[1903,1904,1905,1906],{"id":289,"depth":762,"text":289},{"id":311,"depth":762,"text":311},{"id":316,"depth":762,"text":316},{"id":397,"depth":762,"text":397},{"id":452,"depth":512,"text":452,"children":1908},[1909,1910,1911],{"id":455,"depth":762,"text":455},{"id":518,"depth":762,"text":518},{"id":562,"depth":762,"text":1912},"struct 构造",{"id":565,"depth":512,"text":565,"children":1914},[1915],{"id":691,"depth":762,"text":691},{"id":709,"depth":512,"text":709},{"id":768,"depth":512,"text":489},{"id":822,"depth":512,"text":822},{"id":902,"depth":512,"text":902,"children":1920},[1921,1922,1923],{"id":905,"depth":762,"text":905},{"id":948,"depth":762,"text":61},{"id":977,"depth":762,"text":978},{"id":1018,"depth":512,"text":1018,"children":1925},[1926,1928,1929,1930,1931,1932],{"id":1021,"depth":762,"text":1927},"let \u002F var",{"id":1062,"depth":762,"text":1062},{"id":1102,"depth":762,"text":1102},{"id":75,"depth":762,"text":75},{"id":1278,"depth":762,"text":1840},{"id":1297,"depth":762,"text":1300},{"id":1207,"depth":512,"text":1207},{"id":1389,"depth":512,"text":1389,"children":1935},[1936,1937,1938,1939],{"id":1392,"depth":762,"text":1392},{"id":1445,"depth":762,"text":1445},{"id":1537,"depth":762,"text":1537},{"id":1567,"depth":762,"text":1567},{"id":1598,"depth":512,"text":1599,"children":1941},[1942,1944,1946],{"id":1602,"depth":762,"text":1943},"成员访问 x.y",{"id":1628,"depth":762,"text":1945},"下标访问 x[y]",{"id":1663,"depth":762,"text":1947},"调用 f(...)",{"id":1678,"depth":512,"text":667},{"id":1729,"depth":512,"text":1729},{"id":1809,"depth":512,"text":1809,"children":1951},[1952,1953],{"id":1812,"depth":762,"text":1812},{"id":1847,"depth":762,"text":1954},"运行时 panic","md",{},{},{"title":214,"description":499},"GLU7Yja1XhlSBYhKTfIm7bmngQdFzyW-CtCYTrFSKyo",[1961,1962],{"title":210,"path":211,"stem":212,"description":499,"children":-1},{"title":218,"path":219,"stem":220,"description":499,"children":-1},1776981319057]