【问题标题】:Return value of iteration over array数组迭代的返回值
【发布时间】:2019-02-12 04:56:53
【问题描述】:

我正在尝试建立一个音乐库。

我的主要问题是,当我使用 #each 方法遍历数组时,返回值很大,因为我知道我的数组是关于一位艺术家的所有专辑和歌曲。

您是否知道一种方法来迭代返回值为nil 或至少比我创建的整个艺术家数组短得多的数组?

【问题讨论】:

  • 所以你遍历一个数组来做某事,你想返回 nil?正确的?为什么?
  • 你到底想做什么?你能分享一些代码吗?
  • 我也很好奇
  • 您是否认为each 正在创建它正在枚举的数组的副本?这就是您关心的问题,但事实并非如此。
  • 最好分享实际代码。

标签: arrays ruby iteration return-value


【解决方案1】:

在您的表达式后添加&& nil

myarray.each {....} && nil

【讨论】:

    【解决方案2】:

    Compact 方法将消除 nil 值,如果这就是您的意思的话。

    ['foo', nil, 'bar'].compact.each do |part|
        puts part
    end
    
    => foo
       bar
    

    【讨论】:

      【解决方案3】:

      如果您不想将集合作为返回值,只需在迭代后返回 nil

      def your_method
        your_collection.each do |item|
          # do something
        end
        nil
      end
      

      【讨论】:

      • each 返回它正在操作的东西,它不会复制它,但是在irb 中看到它真的很烦人。等效:x.map { ... }; nil
      • @tadman 你确定你的评论是为了我的回答吗?我从没谈过复制
      • 您的方法在代码中运行良好,但对于您在irb 中所做的单行代码,您需要一种稍微不同的方法。文案部分与最初问题中的一些混淆有关。
      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 2014-04-29
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      相关资源
      最近更新 更多