在使用C#进行编程的不同时间,我发现自己处于需要定义lambda(或匿名委托)并在同一行中调用它的情况.在这一点上,我能够做到这一点的"最干净"的方式是这样的:
bool foo_equals_bar = new Func<String, bool>(str => str.Equals("foo"))("bar");
Run Code Online (Sandbox Code Playgroud)
我希望能够写下以下内容:
bool foo_equals_bar = (str => str.Equals("foo"))("bar");
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不起作用.我会很高兴知道:
(str => str.Equals("foo"))这样返回的是什么,可用于初始化a Func<String, bool>,但不能像a一样进行求值Func<String, bool>?我应该指出我在C#3(VS2008)中工作,所以如果解决方案只存在于C#4中,请提及.(我仍然想知道,即使目前我无法获得解决方案).
谢谢
我有一个父UIView,其子UIView(在下面的代码中使用UILabel),其框架设置为父的边界,其autoresizingMask设置为灵活的宽度和高度:
UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
UILabel* childLabel = [[UILabel alloc] initWithFrame:parentView.bounds];
childLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
childLabel.textAlignment = UITextAlignmentCenter;
childLabel.text = @"Hello";
Run Code Online (Sandbox Code Playgroud)
我希望能够为父视图的框架设置动画,特别是其大小,并将子视图调整为动画的一部分:
[UIView animateWithDuration:1.0 animations:^{ parentView.frame = CGRectMake(0, 0, 160, 240); }];
Run Code Online (Sandbox Code Playgroud)
作为这个动画的结果,我希望UILabel的文本与父视图的动画一起动画,所以在视觉上你会看到文本从(160,240)的中心移动到(80,120).但是,不会动画显示子视图的帧会立即设置为动画结束时应该具有的值,因此您可以看到文本的位置在动画开始时立即跳转.
有没有办法让子视图作为动画的一部分自动调整大小?