gpt4 book ai didi

java - ruby 中的条件和迭代器

转载 作者:行者123 更新时间:2023-12-01 14:17:15 25 4
gpt4 key购买 nike

我正在尝试将以下代码翻译成 ruby​​:

public void discardWeapon(Weapon w){
if(!weapons.isEmpty()){
boolean discarded = false;
Iterator<WeaponType> it = weapons.iterator();
while(it.hasNext() && !discarded){
WeaponType wtaux = it.next();
if(wtaux == w.getWeaponType()){
it.remove();
discarded = true;
}
}
}
}

但是,当谈到 while 循环时,我真的找不到在 ruby​​ 中实现它的实用方法。到目前为止,我有以下结构:

def discardWeapon(w)
if(!@weapons.empty?)
discarded = false
@weapons.each do |wtaux|

end
end
end

但是,在使用 .each 迭代器时如何检查我的条件是否满足?提前致谢。

最佳答案

我不确定我是否正确阅读了你的 Java 代码,但我觉得你有一个实例变量 @weapons 包含一组武器,而你想要丢弃一个武器实例来自该列表的武器 w

def discard_weapon(weapon)
index = @weapons.index(weapon)
@weapons.delete_at(index) if index
end

Array#index返回第一个匹配项的索引。和 Array#delete_at找到元素时删除索引处的元素。

当相同的武器可能多次包含在数组中并且您想丢弃所有匹配的武器时,您可以使用以下单行代码:

def discard_weapon(weapon)
@weapons.delete(weapon)
end

关于java - ruby 中的条件和迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com