如何在 dlang 中传递 file.ByChunk?
How to pass file.ByChunk in dlang?
我是D的新手
我有以下代码:
auto file = File("test.txt", "r");
scope(exit) file.close();
foreach (letter; getTextKernel(file.byChunk(8192))) {
writeln(letter);
}
我的 getTextKernel 看起来像:
string[] getTextKernel(InputRange!ubyte[] text) pure { ... }
我收到错误:
getTextKernel (InputRange!ubyte[] 文本) 不可使用参数类型 (ByChunk) 调用
关于 byChunk 的文档:Returns an input range set up to read from the file handle a chunk at a time.
更新:整个程序
import std.stdio;
string[] getTextKernel(R)(R text) pure {
return ["aa", "bbb", "ccc"];
}
void main() {
writeln("Hello master dmitry!");
auto file = File("test.txt", "r");
scope(exit) file.close();
// StubdGenetics genetic;
foreach (letter; getTextKernel(file.byChunk(8192))) {
writeln(letter);
}
}
错误:纯函数'app.getTextKernel!(ByChunk).getTextKernel'无法调用不纯的析构函数'std.stdio.File.ByChunk.~this'
通常的方法是让 getTextKernel
接受模板参数。
string[] getTextKernel(R)(R text) pure { ... }
因为范围在 D 中是惰性的,所以它们通常是自定义的一次性类型。 InputRange
在我的经验中几乎从未使用过。使用它是有原因的,但它速度较慢(使用运行时分派而不是编译时)并且通常不需要。
我是D的新手
我有以下代码:
auto file = File("test.txt", "r");
scope(exit) file.close();
foreach (letter; getTextKernel(file.byChunk(8192))) {
writeln(letter);
}
我的 getTextKernel 看起来像:
string[] getTextKernel(InputRange!ubyte[] text) pure { ... }
我收到错误: getTextKernel (InputRange!ubyte[] 文本) 不可使用参数类型 (ByChunk) 调用
关于 byChunk 的文档:Returns an input range set up to read from the file handle a chunk at a time.
更新:整个程序
import std.stdio;
string[] getTextKernel(R)(R text) pure {
return ["aa", "bbb", "ccc"];
}
void main() {
writeln("Hello master dmitry!");
auto file = File("test.txt", "r");
scope(exit) file.close();
// StubdGenetics genetic;
foreach (letter; getTextKernel(file.byChunk(8192))) {
writeln(letter);
}
}
错误:纯函数'app.getTextKernel!(ByChunk).getTextKernel'无法调用不纯的析构函数'std.stdio.File.ByChunk.~this'
通常的方法是让 getTextKernel
接受模板参数。
string[] getTextKernel(R)(R text) pure { ... }
因为范围在 D 中是惰性的,所以它们通常是自定义的一次性类型。 InputRange
在我的经验中几乎从未使用过。使用它是有原因的,但它速度较慢(使用运行时分派而不是编译时)并且通常不需要。