사용자 정의 기능에 대한 도움말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를 만드는 데 사용하는 해시 함수입니다. 이 함수는 현재 인수로 목록을 가져옵니다. 하나 이상의 인수를 쉼표로 구분하여 사용하고 싶습니다. 사용자 정의 기능에 추가하고 다른 사용자가 사용할 수 있기를 바랍니다. Sum () 함수와 같이 쉼표로 구분 된 여러 인수를 허용하면 사용자가 더 쉬울 것이라고 생각했습니다.
이견있는 사람?
많은 감사합니다
남자
다시 : 사용자 정의 기능에 대한 도움말다음은 코드를 사용하여 사전 설정 최대 값을 입력 할 수 있지만 해시 함수에 대한 가변 입력 매개 변수 목록을 입력하는 방법입니다
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 ) ) ) );
);다시 : 사용자 정의 기능에 대한 도움말정확히 당신이 찾고있는 것이 아닐 수도 있지만 실제로 문자열 목록 인 경우 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));다시 : 사용자 정의 기능에 대한 도움말 john ,
이것은 또 다른 변형입니다 vince 과 tx 의 솔루션.
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 개를 초과하는 경우 목록을 사용할 수 있도록 사용자에게 문서화 / 훈련이 필요합니다.
다시 : 사용자 정의 기능에 대한 도움말솔루션 주셔서 감사합니다!