以下示例(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");
}
答案 0 :(得分:1)
在第一个例子中,这个:
.then(stdout.write)
相当于:
.then((String sText) {
stdout.write(sText);
})
从技术上讲,还有一个函数调用,你还有一个变量,它应该花费你几个字节(我不确定具体的实现)。字符串是不可改变的;您只接收对String的引用,因此您不使用第二个版本保存资源(除了函数调用和几个字节的内存)。
无论你想要对String的内容做什么,当然可能会涉及使用资源,但这不应该是一个问题,除非文件很大。