Hilfe bei der benutzerdefinierten Funktionhash = 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 ) ) ) );
);Dies ist eine Hash-Funktion, die ich verwende, um eindeutige IDs zu erstellen.Die Funktion nimmt derzeit eine Liste als Argument.Ich möchte, dass es ein oder mehrere durch Kommas getrennte Argumente nimmt.Ich hoffe, es zu benutzerdefinierten Funktionen hinzufügen und anderen Benutzern zur Verfügung stellen zu können.Dachte, das wäre einfacher für Benutzer, wenn es mehrere durch Kommas getrennte Argumente akzeptieren würde, wie die Sum()-Funktion.
Irgendwelche Gedanken?
Danke vielmals,
John
Betreff: Hilfe bei der benutzerdefinierten FunktionVielen Dank für deine Lösung!Betreff: Hilfe bei der benutzerdefinierten Funktion@johnmoore ,
Dies ist eine andere Variante von @vince_faller und @txnelson Die Lösungen von .
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
Es würde einige Dokumentation/Schulung für Ihre Benutzer erfordern, dass bis zu 10 Zeichenfolgenargumente eingegeben werden können, oder verwenden Sie eine Liste, wenn mehr als 10 vorhanden sind.
Betreff: Hilfe bei der benutzerdefinierten FunktionEs ist möglicherweise nicht genau das, wonach Sie suchen, aber Sie können einfach prüfen, ob es sich wirklich nur um eine Liste von Zeichenfolgen handelt.
Unendlich unbekannte Argumente sind am einfachsten mit einer Liste.
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));Betreff: Hilfe bei der benutzerdefinierten FunktionHier ist eine Methode, die Ihren Code verwendet, die die Eingabe einer großen voreingestellten maximalen, aber variablen Liste von Eingabeparametern für Ihre Hash-Funktion ermöglichen würde
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 ) ) ) );
);