java - ruby 中的条件和迭代器

标签 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){
            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/

相关文章:

ruby-on-rails - 通过 Rails 应用程序上传的文件的 SELinux 类型设置不正确

java - 如何防止 FastDateFormat 模式 "yyyy-MM-dd"解析格式为 "dd-MM-yyyy"的字符串

arrays - 我在 Golang 中使用循环创建数组数组时遇到问题

java - 调用sqlite onUpgrade问题

javascript - 如何使用数组将图像放入缩略图列表 Ionic 中?

javascript - 将嵌套对象与 JavaScript 中的数组进行比较并返回键相等

ruby - 如何找到 ruby 中两个时间之间的差异?

ruby-on-rails - 始终显示 Kaminari 的分页控件

java - 免费版和付费版应用程序的通用数据

java - spring如何上传图片到/src/main/webapp/Theme/img文件夹