如何测试对象数组是否包含字符串?

时间:2012-11-02 19:39:10

标签: intersystems-cache

在C#中,我可以这样做:

public string[] MyStrings;
...
...
if(MyStrings.Contains("bob")) ...

在ObjectScript中如何完成?

使用%ArrayOfObjects类型,我看不到我要查找的内容here

我尝试过:

#Dim MyStrings As %ArrayOfDataTypes
do MyStrings.SetAt("User","User")   
do MyStrings.SetAt("Users","Users")
do MyStrings.SetAt("Group","Group")
do MyStrings.SetAt("Groups","Groups")

// if MyStrings contains Groups
if MyStrings.GetAt("Groups") '= ""
{
}

3 个答案:

答案 0 :(得分:2)

听起来你想要.IsDefined() method。例如:

#Dim MyStrings As %ArrayOfDataTypes
do MyStrings.SetAt("User","User")   
do MyStrings.SetAt("Users","Users")
do MyStrings.SetAt("Group","Group")
do MyStrings.SetAt("Groups","Groups")

// if MyStrings contains Groups
if MyStrings.IsDefined("Groups")
{
    // code to execute if MyStrings contained "Groups"
}

答案 1 :(得分:1)

我不熟悉那种语言,但你可以试试这样的话:

//declare myString to hold a string
set myString = MyStrings.GetNext("")
While myString '= ""
{
    if MyStrings.GetAt(myString) '= ""  //Or should it be something like myString.value?  Is there a way to check the type of an object to see if it is a string?
    {
        //Do something here.  Exit loop if you are trying to find just a match.
    }
}

我假设'=相当于C#中的!=

答案 2 :(得分:1)

你做得对。我建议使用你自己的方法创建%Library.ArrayOfDataTypes的子类,例如“contains”。

使用您自己控制的类可能比使用您无法控制的库类更安全(尽管在紧要关头,您总是可以使用%Dictionary包方法将对库类的所有引用切换为新的你的设计类,所以它并不是那么大的交易)。