$ bit()可以在这里创建变量吗?

时间:2016-04-16 01:49:03

标签: objectscript

this project提取的代码:

class Rectangle():
    def __init__(self, height, width):
        self.height = height
        self.width = width
        self.area = areaCalc(self)

    def areaCalc(self):
        return self.heigh*self.width

在标记为Method RefineSearch(pNewCriteria As %String) As %Status [ ZenMethod ] { set tSC = $$$OK try { set ..criteria = ..criteria _$s(..criteria="":"",1:",")_pNewCriteria set tType = $piece(pNewCriteria,":",1) if tType="prop" { set tSQL = "SELECT ID FROM "_..tableName_" WHERE "_$piece(pNewCriteria,":",2)_" = '"_$piece(pNewCriteria,":",3)_"' AND %ID %FIND Demo_SearchPortal.Find("_..qid_")" set tResult = ##class(%SQL.Statement).%ExecDirect(,tSQL) while tResult.%Next() { set tID = tResult.%GetData(1) $$$IFBITOFFPOS(tID,tChunk,tPos) set $bit(tBits(tChunk),tPos)=1 // <-- HERE } // compress bitmaps set tMaxChunk=$order(tBits(""),-1) for tChunk = 1:1:tMaxChunk { set tBits(tChunk) = $bitlogic(tBits(tChunk)) } } else { set tFinder = $classmethod(..className, ..indexName_"Embedded") if (tType = "entity") { do tFinder.PrepareFind("{"_$piece(pNewCriteria,":",2)_"}", ..searchMode) } elseif (tType = "word") { do tFinder.PrepareFind($piece(pNewCriteria,":",2), ..searchMode) } merge tOldBits = ^CacheTemp.IF.SearchPortal.Query(..qid,"b") set tChunk="" for { set tBits = tFinder.NextChunk(.tChunk) quit:tChunk="" set tBits(tChunk)=$bitlogic(tBits & tOldBits(tChunk)) } } set tNewQID = $i(^CacheTemp.IF.SearchPortal.Query) merge ^CacheTemp.IF.SearchPortal.Query(tNewQID,"b") = tBits set ^CacheTemp.IF.SearchPortal.Query(tNewQID, "parent") = ..qid set ..qid = tNewQID } catch (ex) { set tSC = ex.AsStatus() } quit tSC } 的地方,这是<-- HERE的第一次出现 - 具有下载的启动权限。

这真的合法吗?

1 个答案:

答案 0 :(得分:2)

$bit可以在SET命令中用作左侧函数,在这种情况下,任何合法变量都是合法的。如果未定义此变量将获得新值。除了$bit也可用$piece$extract,您可以在documentation

中看到它