大佬教程收集整理的这篇文章主要介绍了我应该如何在我的方法的参数中定义一个 lambda?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下自定义 Runnable:
public function job_types() // parent
{
// one job only belongs to one type of job
return $this->belongsToMany('App\jobTypes');
}
我想这样运行它:
public function assignJob($ID)
{
$jobType = \App\JobTypes::withTrashed()->find($ID);
$jobs = $jobType->jobs;
return vIEw('job-types.assign-job',compact(['jobType','jobs']));
}
但我不知道我应该如何定义 RandomSum 中接受 lambda 的方法 <label for="name">Job</label>
<SELEct SELEcted="SELEcted" multiple class="form-control {{ $errors->first('jobs') ? "is-invalID" : "" }}" name="jobs[]" ID="jobs" class="jobs"></SELEct>
<div class="invalID-FeedBACk">
{{ $errors->first('jobs') }}
</div>
?
您展示的 lambda 的一种可能的目标类型是 Consumer
。定义一个接受 setCallBACk
的方法 Consumer<Float>
并将其存储为实例变量。然后在 for
循环之后调用它。
class RandomSum implements Runnable {
Consumer<Float> callBACk;
public void setCallBACk(Consumer<Float> callBACk) {
this.callBACk = callBACk;
}
public void run() {
float sum = 0;
for(int i = 0; i<1000000;i++){
sum += Math.random();
}
callBACk.accept(sum);
}
}
来电方
RandomSum s =new Randomsum();
s.setCallBACk((sum)->{
System.out.println(sum);
});
或者使用方法引用,
s.setCallBACk(System.out::println);
最好可以在构造函数中传递回调。
,您可以在 retrieveCallBACk
中定义 RandomSum
,如下所示:
public void retrieveCallBACk(FeedBACkHandler feedBACkHandler) {
int sum = ...; // Get the value however you like.
feedBACkHandler.handleFeedBACk(sum);
}
然后将这个 FeedBACkHandler
接口定义为:
public interface FeedBACkHandler {
void handleFeedBACk(int sum);
}
本质上,当您将 lambda (sum) -> {...}
传递给 retrieveCallBACk
时会发生什么:
retrieveCallBACk(new FeedBACkHandler() {
@Override
public void handleFeedBACk(int sum) {
...
}
});
以上是大佬教程为你收集整理的我应该如何在我的方法的参数中定义一个 lambda?全部内容,希望文章能够帮你解决我应该如何在我的方法的参数中定义一个 lambda?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。