- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
export type Maybe<T> = null | undefined | T;
export interface Path {
readonly prev: Path | undefined;
readonly key: string | number;
readonly typename: string | undefined;
}
/**
* Given a Path and a key, return a new Path containing the new key.
*/
export function addPath(
prev: Readonly<Path> | undefined,
key: string | number,
typename: string | undefined,
): Path {
return { prev, key, typename };
}
/**
* Given a Path, return an Array of the path keys.
*/
export function pathToArray(
path: Maybe<Readonly<Path>>,
): Array<string | number> {
let curr = path;
let flattened = [];
while (curr) {
flattened.push(curr.key);
curr = curr.prev;
}
//flattened.reverse();
return flattened;
}
function main() {
let pathArray = pathToArray({
key: "path",
prev: undefined,
typename: undefined,
});
for (let x of pathArray) {
print(x);
}
}
последний коммит позволяет скомпилить и выполнить данный код. это невиданный прогресс в компиляторе :)
и уже традиционный вопрос ... а ты там можешь наговнокодить на С/C++?