0

下面的示例 (1) 读取文件并打印内容,而不将文件内容显式分配给变量(即“.then(stdout.write)”)。但是,如果我想做的不仅仅是打印内容(2),我需要将内容分配给一个变量(我认为)。

是否可以在不将文件文本分配给变量的情况下实现这一目标(打印内容并做更多事情)?

在第一个示例中,是否创建了隐式变量?或者,换句话说,example1 是否通过不创建显式变量来使用更少的资源?

//Example 1:
import 'dart:io';
void main() {
  new File(new Options().script)
    .readAsString(encoding: Encoding.ASCII)
    .then(stdout.write)
    .catchError((oError) => print(oError));
  print("Reading file ...\n");
}

//Example 2:
import 'dart:io';
void main() {
  new File(new Options().script)
    .readAsString(encoding: Encoding.ASCII)
    .then((String sText) {
      stdout.write(sText+"\n\n");
      print ('Completed');
    })
    .catchError((oError) => print(oError));
  print("Reading file ...\n");
}
4

1 回答 1

1

在第一个示例中,这是:

.then(stdout.write)

相当于:

.then((String sText) {
  stdout.write(sText);
})

从技术上讲,还有一个函数调用,你还有一个变量,这应该花费你几个字节(我不确定确切的实现)。字符串是不可变的;您只收到对字符串的引用,因此您不会通过使用第二个版本来节省资源(函数调用和几个字节的内存除外)。

当然,无论您想对 String 的内容做什么,都可能涉及使用资源,但这不应该成为问题,除非文件很大。

于 2013-05-13T22:50:48.360 回答