Java 有限状态机中的返回语句
有谁能告诉我,在有限状态机的状态中,返回语句的用途是什么?例如,我有一个足球运动员状态的代码:Java 有限状态机中的返回语句,java,return,state-machine,Java,Return,State Machine,有谁能告诉我,在有限状态机的状态中,返回语句的用途是什么?例如,我有一个足球运动员状态的代码: public class ChaseBall extends State<FieldPlayer> { private static ChaseBall instance = new ChaseBall(); private ChaseBall() { } //this is a singleton public static ChaseBal
public class ChaseBall extends State<FieldPlayer> {
private static ChaseBall instance = new ChaseBall();
private ChaseBall() {
}
//this is a singleton
public static ChaseBall Instance() {
return instance;
}
@Override
public void Enter(FieldPlayer player) {
player.Steering().SeekOn();
}
}
@Override
public void Execute(FieldPlayer player) {
//if the ball is within kicking range the player changes state to KickBall.
if (player.BallWithinKickingRange() && player.isReadyForNextKick()) {
player.GetFSM().ChangeState(KickBall.Instance());
return;
}
//if the player is the closest player to the ball then he should keep
//chasing it
if (player.isClosestTeamMemberToBall()) {
player.Steering().SetTarget(player.Ball().Pos());
return;
}
//if the player is not closest to the ball anymore, he should return back
//to his home region and wait for another opportunity
player.GetFSM().ChangeState(ReturnToHomeRegion.Instance());
}
@Override
public void Exit(FieldPlayer player) {
player.Steering().SeekOff();
}
}
公共类ChaseBall扩展状态{
私有静态ChaseBall实例=新建ChaseBall();
私人追逐球(){
}
//这是一个单身汉
公共静态ChaseBall实例(){
返回实例;
}
@凌驾
公开无效进入(现场球员){
player.Steering().SeekOn();
}
}
@凌驾
公开无效执行(现场球员){
//如果球在踢球范围内,球员将状态更改为踢球。
if(player.ballWithinkingRange()和&player.isReadyForNextKick()){
player.GetFSM().ChangeState(KickBall.Instance());
返回;
}
//如果球员是离球最近的球员,那么他应该保持距离
//追逐它
if(player.isClosestTeamMemberToBall()){
player.Steering().SetTarget(player.Ball().Pos());
返回;
}
//如果球员不再离球最近,他应该回来
//去他家乡等待另一个机会
player.GetFSM().ChangeState(ReturnToHomeRegion.Instance());
}
@凌驾
公共无效出口(现场球员){
player.Steering().SeekOff();
}
}
我想知道是否有人能解释Execute()方法的前两个if语句中的return关键字的用途?
谢谢在本例中,它主要是一系列else-if子句的格式替代。它在逻辑上等同于
if (<condition>) {
<code>
} else if (<condition>) {
<code>
} else {
<code>
}
它只是退出功能。如果您知道状态及其转换,则无需检查其他状态/转换