使用大小和分段都使用相同变量名的位数组模式匹配,会为 JavaScript 生成不正确的代码
gleam pub fn main() { let prefix = 8 let data = << 35, 36 >> case data { << prefix:bits-size(prefix), rest:bits >> -> #(prefix, rest) _ -> #(data, <<>>) } |> echo
Nil } JavaScript export function main() { let prefix = 8; let data = toBitArray([35, 36]); let _block; if (prefix >= 0 && data.bitSize >= prefix) { let prefix$1 = bitArraySlice(data, 0, prefix$1); // Argument should be prefix let rest = bitArraySlice(data, prefix$1); // Argument should be prefix _block = [prefix$1, rest]; } else { _block = [data, toBitArray([])]; } let _pipe = _block; echo(_pipe, undefined, "src/main.gleam", 10); return undefined; } 这会导致运行时错误:
ReferenceError: Cannot access 'prefix$1' before initialization
内容来源: gleam-lang/gleam