gpt4 book ai didi

javascript - 如何将流转换为 typescript 中的变量

转载 作者:行者123 更新时间:2023-12-02 23:07:07 24 4
gpt4 key购买 nike

有一个输入文件(file.in)。

4  
5
1 2
2 4
3 1
3 4
4 2

在 typescript 中,逐行读取输入文件。

const graphsMain = () => {

let lineReader = require('readline').createInterface({
input: require('fs').createReadStream('file.in')
});

lineReader.on('line', function (line) {
console.log('Line from file:', line);
});
}

graphsMain();

在 C++ 中,我可以通过编码来做到这一点。

#include <iostream>

using namespace std;

bool A[10][10];

int main() {
int x, y, nodes, edges;
cin >> nodes; // Number of nodes
cin >> edges; // Number of edges
for (int i = 0; i < edges; ++i) {
cin >> x >> y;
A[x][y] = true;
}

return 0;
}

但是,我不知道如何在 typescript 中实现。欢迎大家发表评论。

最佳答案

我认为这里的问题是,如果您从 C++ 进入 Javascript 世界,那么您编写的代码的实际执行方式会存在很大的概念差异。 C++ 严重依赖同步执行,而 Javascript 世界更关注异步执行。

您尝试解决的具体问题可以通过使用您尝试使用的异步 Node API 来实现:

// imports, or require()s as in your code are like conceptually equivalent
// to #include in C++, hence should be at the beginning of the file, not somewhere
// in the middle.
import * as fs from 'fs'
import * as readline from 'readline'

const graphsMain = () => {
let lineReader = readline.createInterface({
input: fs.createReadStream('file.in')
});

let lineCount = 0;
let nodes: number | undefined
let edges: number | undefined
let buffer: number[][] = []
lineReader.on('line', function (line) {
console.log('Line from file:', line);
if (lineCount == 0) {
nodes = parseInt(line)
} else if (lineCount == 1) {
edges = parseInt(line)
} else {
const coordinates = line.split(' ').map((item) => parseInt(item))
buffer.push(coordinates)
}
lineCount++
});

lineReader.on('close', function () {
console.log('end. I got these values:', nodes, edges, buffer)
});
}

graphsMain();

也就是说,您可以通过多种不同的方式来解决这个问题,包括您可能更熟悉的同步 API,例如 fs.readFileSync

虽然我觉得您的 Javascript 之旅才刚刚开始,但我强烈建议您阅读一下整个生态系统依赖于异步代码执行的重点。 Mozilla MDN有一系列精彩的文章解释了这一切。

关于javascript - 如何将流转换为 typescript 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57535935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com