Aiuto con funzione personalizzatahash = Function( {StringList},
{StringListItem,HashString},
For( StringListItem = 1, StringListItem <= Length( StringList ), StringListItem++,
StringList[StringListItem] = Char( Eval( Stringlist[StringListItem] ) )
);
HashString = Hex( Blob MD5( Char To Blob( Concat Items( StringList ) ) ) );
);Questa è una funzione hash che utilizzo per creare ID univoci. La funzione attualmente prende un elenco come argomento. Vorrei che prendesse uno o più argomenti separati da virgole. Spero di aggiungerlo a funzioni personalizzate e renderlo disponibile ad altri utenti. Pensato che sarebbe più facile per gli utenti se accettasse più argomenti separati da virgole come la funzione Sum ().
qualche idea?
Grazie molto,
John
Ri: Aiuto con la funzione personalizzataEcco un metodo che utilizza il tuo codice che consentirebbe l'inserimento di alcuni valori massimi preimpostati, ma un elenco variabile di parametri di input per la tua funzione hash
hash = Function( {a, b = "", c = "", d = ""}, // e="",f=""...…...z="")
//{StringListItem,HashString},
StringList = {};
string# = 1;
varList = {"a", "b", "c", "d"}; // .........."z"
While( Eval( Parse( varlist[string#] ) ) != "",
Insert Into( stringList, Eval( Parse( varlist[string#] ) ) );
string# = string# + 1;
);
For( StringListItem = 1, StringListItem <= Length( StringList ), StringListItem++,
StringList[StringListItem] = Char( Eval( Stringlist[StringListItem] ) )
);
HashString = Hex( Blob MD5( Char To Blob( Concat Items( StringList ) ) ) );
);Ri: Aiuto con la funzione personalizzataPotrebbe non essere esattamente quello che stai cercando, ma potresti semplicemente evallare se è davvero solo un elenco di stringhe.
Gli argomenti infiniti sconosciuti sono i più semplici con un elenco.
Names default to here(1);
hash = Function( {StringList},
{StringListItem,HashString},
For( StringListItem = 1, StringListItem <= Length( StringList ), StringListItem++,
StringList[StringListItem] = Char( Eval( Stringlist[StringListItem] ) )
);
HashString = Hex( Blob MD5( Char To Blob( Concat Items( StringList ) ) ) );
);
different_hash = function({StringList},
StringList = Evallist(StringList);
Hex( Blob MD5( Char To Blob( Concat Items( StringList ) ) ) );
);
x = "2";
y = "a";
z = "Expr(b)";
b = "another string";
l = {x, y, z};
show(hash(l) == different_hash(l));Ri: Aiuto con la funzione personalizzata @johnmoore ,
Questa è un'altra variante di @vince_faller e @txnelson le soluzioni.
Names default to here(1);
hash = Function( {val1, val2=., val3=., val4=., val5=., val6=., val7=., val8=., val9=., val10=.},
{i, StringListItem,HashString},
if(IsList(val1), StringList = EvalList(val1),
StringList={};
For(i=1, i<=10,i++,
Eval( Parse(EvalInsert("If( !IsMissing(val^i^) & IsString(val^i^), InsertInto(StringList, val^i^))" ) ) )
);
);
//Show(StringList);
For( StringListItem = 1, StringListItem <= Length( StringList ), StringListItem++,
StringList[StringListItem] = Char( Eval( Stringlist[StringListItem] ) )
);
HashString = Hex( Blob MD5( Char To Blob( Concat Items( StringList ) ) ) );
);
x = "2";
y = "a";
z = "Expr(b)";
b = "another string";
hash(x,y,z);
l = {x, y, z};
show(hash(l), hash(x,y,z), hash( list(x,y,z) ) ); //produces the same result
Ci vorrebbe un po 'di documentazione / formazione per i tuoi utenti, che è possibile inserire fino a 10 argomenti stringa o utilizzare un elenco se più di 10.
Ri: Aiuto con la funzione personalizzataMille grazie per la tua soluzione!