カスタム関数のヘルプ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 ) ) ) );
);これは、一意のIDを作成するために使用するハッシュ関数です。 関数は現在、引数としてリストを受け取ります。 カンマで区切られた1つ以上の引数を取得する必要があります。 カスタム関数に追加して、他のユーザーが利用できるようにしたいと思っています。 Sum()関数のように、コンマで区切られた複数の引数を受け入れると、ユーザーにとっては簡単になると思います。
何かご意見は?
どうもありがとう、
ジョン
Re:カスタム関数のヘルプこれは、いくつかの大きなプリセット最大値の入力を可能にするコードを使用する方法ですが、ハッシュ関数の入力パラメーターの可変リストです
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 ) ) ) );
);Re:カスタム関数のヘルプそれはあなたが探しているものとは正確には違うかもしれませんが、それが本当に単なる文字列のリストである場合は、単にevallistすることができます。
無限の未知の引数は、リストを使用すると最も簡単です。
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));Re:カスタム関数のヘルプ @johnmoore 、
これはの別のバリエーションです @vince_faller そして @txnelson のソリューション。
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
最大10個の文字列引数を入力することも、10個を超える場合はリストを使用することもできるため、ユーザーのドキュメントやトレーニングが必要になります。
Re:カスタム関数のヘルプあなたの解決策に感謝します!