2016-08-01 47 views
0

你好Groovy的专家分配顶部的变量,找到一个集合中的值,并使用Groovy

我使用下面的命令来获取所有的ODI Dataservers。

def PSchema=DServer.getPhysicalSchemas(); 

当我打印PSchema变量时,我得到以下值。

[oracle.odi.domain.topology.OdiPhysicalSchema ABC.X1, oracle.odi.domain.topology.OdiPhysicalSchema ABC.X2] 

我想实现我在这里会路过X1或运行期间X2 ...
然后我想验证与PSchema结果,并打印该值以下值:

oracle.odi.domain.topology.OdiPhysicalSchema ABC.X2 

我尝试使用以下选项:

def PSchema44 = PSchema11.findIndexValues { it =~ /(X1)/ } 
def pl=PSchema11.collect{if(it.contains ('X1)){return it}} 

我尝试了LO OP检查是否值越来越正确打印..result是好的:

for (item in PSchema11) 
{ 
    println item 
} 
+0

收集的正确语法应该是'def pl = PSchema11.collect {it.contains('X1')}' 你试过吗? – OsaSoft

+0

收到以下错误** groovy.lang.MissingMethodException:没有方法的签名:oracle.odi.domain.topology.OdiPhysicalSchema.contains()适用于参数类型:(java.lang.String)values:[X1] 可能的解决方案:toString(),toString(),toString(),notify()** – Ananda

+0

查看文档,看起来像'getPhysicalSchemas()'返回 IPhysicalSchemas的一个不可修改的集合 您究竟想要达到什么目的?如果我理解正确,您在运行时传递X1或X2,并且想从getPhysicalSchemas()'返回的集合中选择传递的值? – OsaSoft

回答

1

假设“X1”和“X2”是物理架构的名字,你应该能够做这样的事情:

def phys = "X1" 
def pSchemas = dServer.getPhysicalSchemas() 
def schema = pSchemas.find{it.schemaName == phys} 

另外我想你是Groovy的新手,我建议你阅读语法和命名约定。例如,变量名应该总是以小写字母开头

+0

非常感谢!如果您有任何问题,您可以请建议标准命名约定! – Ananda

+0

对于一些常规风格的约定,请参阅http://groovy-lang.org/style-guide.html。至于命名约定,几乎与Java命名约定相同,请参见http://www.javatpoint。COM/Java的命名约定 – OsaSoft

相关问题