我主要是iOS开发人员,但在C#中使用Visual Studio进行了一些UI单元测试。我在C#中看到了这个。
var table = Driver.FindElements(By.TagName("table"));
return table.First(t => t.Displayed == true);
现在,在Objective-C中,我可能会得到一个数组然后循环,直到找到符合我标准的元素,然后返回它,这有点乱。
有没有人知道C#中这些可爱的东西是否很好
我已经在Objective-C中使用了lambda表达式并使用了块,但是语法很糟糕,而且比循环更糟糕。
如果有人能指出我正确的方向,我将非常感激
谢谢,
路加
答案 0 :(得分:2)
Objective-C并不以其漂亮或简洁的语法而闻名。我提出的两个选项是:
NSArray *a = @[ @1, @2, @3, @4 ];
NSLog(@">= 3: %@", [a filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF >= 3"]]);
NSLog(@">= 3: %@", [a filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id obj, id bindings) { return [obj integerValue] >= 3; }]]);
要仅从过滤后的数组中获取第一个对象,只需附加.firstObject
。
在Swift中,它会变得更好,具有更好的块语法,更好的类型推断和自动闭包。