Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ruby中的条件和迭代器_Java_Arrays_Ruby_Iterator_Conditional Statements - Fatal编程技术网

Java 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

我正在尝试将以下代码翻译成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;
            }
        }
    }
}
但是,在使用.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