Java ruby中的条件和迭代器
我正在尝试将以下代码翻译成ruby:Java ruby中的条件和迭代器,java,arrays,ruby,iterator,conditional-statements,Java,Arrays,Ruby,Iterator,Conditional Statements,我正在尝试将以下代码翻译成ruby: public void discardWeapon(Weapon w){ if(!weapons.isEmpty()){ boolean discarded = false; Iterator<WeaponType> it = weapons.iterator(); while(it.hasNext() && !discarded){ Weapo
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;
}
}
}
}
但是,在使用.each迭代器时,如何检查我的条件是否满足?
提前感谢。我不确定我是否正确阅读了您的Java代码,但我觉得您有一个实例变量
@wearms
,它包含一个武器数组,并且您希望从该列表中丢弃一个武器实例w
def discard_weapon(weapon)
index = @weapons.index(weapon)
@weapons.delete_at(index) if index
end
返回第一个匹配项的索引。并在找到元素时删除索引处的元素
当同一武器可能多次包含在阵列中,并且您希望丢弃所有匹配的武器时,您可以使用以下一种类型:
def discard_weapon(weapon)
@weapons.delete(weapon)
end
为什么不在迭代过程中执行类似于“丢弃时中断”的操作呢?与其逐行逐句地翻译此函数,不如仔细考虑函数实际要实现的功能。Ruby是一种非常简洁优雅的语言;您可以使用ruby在代码的一小部分中编写丑陋的java@如果找到函数
myArray.delete_(myArray.index(n)| | myArray.length)
,则删除(myArray.index(n)| | myArray.length)。谢谢你们两位!
def discard_weapon(weapon)
@weapons.delete(weapon)
end