www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Processing Function of return type(Real and SysTime)

reply Vino <vino.bheeman hotmail.com> writes:
Hi All,

  Request your help on the below code, as i ma getting the below 
error message

Error:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container\array.d(739): Error:
template std.container.array.Array!(Tuple!(string, real)).Array.insertBack
cannot dedu
ce function from argument types !()(RangeT!(Array!(Tuple!(string, 
SysTime)))), candidates are:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container\array.d(805):       
std.container.array.Array!(Tuple!(string, real)).Array.insertBack(Stuff)(Stuff
stuff)
if (isImplicitlyConvertible!(Stuff, T) || isInputRange!Stuff && 
isImplicitlyConvertible!(ElementType!Stuff, T))
SFtest.d(28): Error: template instance 
std.container.array.Array!(Tuple!(string, 
real)).Array.opOpAssign!("~", RangeT!(Array!(Tuple!(string, 
SysTime)))) error i
nstantiating
SFtest.d(33):        instantiated from here: 
MN1!(Array!(Tuple!(string, SysTime)))
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container\array.d(739): Error:
template std.container.array.Array!(Tuple!(string, SysTime)).Array.insertBack
cannot d
educe function from argument types 
!()(RangeT!(Array!(Tuple!(string, real)))), candidates are:
C:\D\dmd2\windows\bin\..\..\src\phobos\std\container\array.d(805):       
std.container.array.Array!(Tuple!(string,
SysTime)).Array.insertBack(Stuff)(Stuff stuf
f) if (isImplicitlyConvertible!(Stuff, T) || isInputRange!Stuff 
&& isImplicitlyConvertible!(ElementType!Stuff, T))
SFtest.d(25): Error: template instance 
std.container.array.Array!(Tuple!(string, 
SysTime)).Array.opOpAssign!("~", RangeT!(Array!(Tuple!(string, 
real)))) error i
nstantiating
SFtest.d(34):        instantiated from here: 
MN1!(Array!(Tuple!(string, real)))
Failed: ["dmd", "-v", "-o-", "SFtest.d", "-I."]

Program:

import std.stdio: writefln, writeln;
import std.traits: ReturnType;
import std.file: SpanMode, dirEntries, isDir, isFile;
import std.algorithm: filter, map, sort;
import std.typecons: Tuple, tuple;
import std.parallelism: parallel, taskPool;
import std.container.array;
import std.datetime.systime: SysTime;
import std.string;

auto FN1(string FFs) {
	auto dFiles = Array!(Tuple!(string, SysTime))(dirEntries(FFs, 
SpanMode.depth).filter!(a => a.isFile).map!(a => tuple(a.name, 
a.timeCreated)));
	return dFiles;
}
auto FN2(string FFs) {
	auto dFiles = Array!(Tuple!(string, real))(dirEntries(FFs, 
SpanMode.depth).filter!(a => a.isFile).map!(a => tuple(a.name, 
a.size.to!real)));
	return dFiles;
}
void MN1(T)(T function(string) coRoutine, Array!string Dirlst) {
alias scRType = typeof(coRoutine(string.init));
auto PFresult = taskPool.workerLocalStorage!scRType();
foreach (string FFs;  parallel(Dirlst[0 .. $],1)) { PFresult.get 
~= coRoutine(FFs.strip); }

does not work
ReturnType!FN1 rFN1data;
foreach(i; PFresult.toRange) { rFN1data ~= i[][]; }
if (!rFN1data[].empty) { writefln("%(%-(%-63s %s %)\n%)", 
rFN1data[].sort!((a,b) => a[1] > b[1])); }

does not work
ReturnType!FN2 rFN2data;
foreach(i; PFresult.toRange) { rFN2data ~= i[][]; }
if (!rFN2data[].empty) { writefln("%(%-(%-63s %s %)\n%)", 
rFN2data[].sort!((a,b) => a[1] > b[1])); }
}
void main () {
auto Dirlst = Array!string ("C:\\Temp\\BACKUP", 
"C:\\Temp\\EXPORT");
MN1(&FN1, Dirlst);
MN1(&FN2, Dirlst);
}

From,
Vino.B
Dec 12 2017
parent Vino <vino.bheeman hotmail.com> writes:
On Tuesday, 12 December 2017 at 14:25:22 UTC, Vino wrote:
 Hi All,

  Request your help on the below code, as i ma getting the below 
 error message

 [...]
Hi All, Was able to resolve this issue, it was my mistake, sorry. From, Vino.B
Dec 12 2017