4
해시에 데이터 묶음이 있는데 그 중 하나를 선택합니다. 때로는 선택할 데이터가 있고 때때로 그렇지 않을 수도 있습니다. 선택 연산자에 의해 발견 된 무언가가 언제 있었는지를 알 수있는 가장 좋은 방법은 무엇이며, 그렇지 않은 경우에는 내 코드에서 이에 반응 할 수 있습니까?KRL의 해시에서 비어있는 pick()을 감지합니다.
해시에 데이터 묶음이 있는데 그 중 하나를 선택합니다. 때로는 선택할 데이터가 있고 때때로 그렇지 않을 수도 있습니다. 선택 연산자에 의해 발견 된 무언가가 언제 있었는지를 알 수있는 가장 좋은 방법은 무엇이며, 그렇지 않은 경우에는 내 코드에서 이에 반응 할 수 있습니까?KRL의 해시에서 비어있는 pick()을 감지합니다.
pick operator은 항상 결과를 배열로 반환하도록 두 번째 선택적 매개 변수를 사용합니다. 즉, 어떤 것이 선택되면 배열의 길이가 0보다 커야합니다. 그렇지 않으면 0이됩니다. 그런 다음이를 사용하여 원하는 작업을 수행 할 수 있습니다.
예제 코드/응용 프로그램은 당신이 물어 기쁘다 http://kynetxappaday.wordpress.com/2011/01/04/day-30-detecting-empty-pick/
ruleset a60x526 {
meta {
name "hash-pick-detect"
description <<
hash-pick-detect
>>
author "Mike Grace"
logging on
}
global {
dataHash = {
"one": {
"name": "Mike"
}, // number
"two": {
"random": 8
}, // number
"three": {
"name": "Alex"
} // number
}; // dataHash
} // global
rule detect_the_pick {
select when pageview ".*"
foreach dataHash setting (key, value)
pre {
userName = value.pick("$.name", true);
length = userName.length();
}
if (length > 0) then {
notify("Key: #{key}","Name: #{userName}<br/>Length: #{length}") with sticky = true;
}
notfired {
raise explicit event empty_pick
with pickedKey = key;
}
}
rule empty_pick_found {
select when explicit empty_pick
pre {
pickedKey = event:param("pickedKey");
results =<<
Key: #{pickedKey}<br/>
doesn't have a name associated with it to pick from
>>; //' fixing syntax highlighting
}
{
notify("An empty pick was detected",results) with sticky = true;
}
}
}
에서 가져옵니다. 나는 전에 이것을 궁금해했다. –