小编Gle*_*enn的帖子

按特定值分组Ruby数组

我有一个数组,我只想选择两个指定值之间的元素.

例如,我有一个如下所示的数组:

a = ["don't want", "don't want", "Start", "want", "want", "Stop", "don't want", "Start", "want", "Stop", "don't want"]
Run Code Online (Sandbox Code Playgroud)

我想在一个数组上调用一个方法来捕获"开始"和"停止"之间的元素(包括"开始"和"停止"元素).生成的数组应如下所示:

[["Start", "want", "want", "Stop"], ["Start", "want", "Stop"]]
Run Code Online (Sandbox Code Playgroud)

我找不到像这样的方法,所以我尝试写一个:

class Array
  def group_by_start_and_stop(start = "Start", stop = "Stop")
    main_array = []
    sub_array = []

    group_this_element = false

    each do |e|
      group_this_element = true if e == start

      sub_array << e if group_this_element

      if group_this_element and e == stop
        main_array << sub_array
        sub_array = []
        group_this_element = false
      end
    end

    main_array
  end …
Run Code Online (Sandbox Code Playgroud)

ruby arrays

10
推荐指数
2
解决办法
1280
查看次数

从块内访问 Ruby 枚举器对象

我想从块内访问枚举器的大小,如下所示:

["cat", "dog", "mouse"].each_with_index { |e, i| puts "#{i + 1} of #{x.size}: #{e}" }
Run Code Online (Sandbox Code Playgroud)

其中 x 是运行each_with_index 的数组。

我尝试了点击方法,但这并没有像我想象的那样起作用。

例如,这段代码看起来不错,我猜:

["cat", "dog", "mouse"].tap { |a| a.each_with_index { |e, i| puts "#{i + 1} of #{a.size}: #{e}" }} # Works, but why do I need two blocks?
Run Code Online (Sandbox Code Playgroud)

我希望只使用一个块而不是两个块来完成此操作。像这样:

["cat", "dog", "mouse"].each_with_index.tap { |a, e, i| puts "#{i + 1} of #{a.size}" } # Does not work
Run Code Online (Sandbox Code Playgroud)

ruby enumeration

5
推荐指数
1
解决办法
318
查看次数

proc sql join 在最接近日期的 SAS 中

如何在 SAS 中使用 proc sql 在两个数据集之间进行一对多连接以获得数据集 B 中最接近数据集 A 中的值的记录?

数据集 A

#Patient     #Date of Dose
001                 2020-02-01
Run Code Online (Sandbox Code Playgroud)

数据集 B

# Patient        # Lab Test         #Date of Test     # Value 
001            Test 1           2020-01-17      6
001            Test 1           2020-01-29      10
Run Code Online (Sandbox Code Playgroud)

我想进行连接以选择数据集 B 中的第二条记录,该记录的“测试日期”与第一个数据集中的“给药日期”最接近(小于或等于)。

sql join date sas proc

5
推荐指数
1
解决办法
662
查看次数

如何在 Ruby 2.7.0 上安装 Nokogiri

我最近升级到 Ruby v2.7.0。

当我尝试安装 Nokogiri 时,出现以下错误:

ERROR:  Error installing nokogiri:
        The last version of nokogiri (>= 0) to support your Ruby & RubyGems was
1.10.9. Try installing it with `gem install nokogiri -v 1.10.9`
        nokogiri requires Ruby version >= 2.3, < 2.7.dev. The current ruby versi
on is 2.7.0.0.
Run Code Online (Sandbox Code Playgroud)

我试图安装这个 gem

gem install nokogiri -v 1.10.9
Run Code Online (Sandbox Code Playgroud)

但我遇到了同样的错误。

现在我使用的是 Ruby v2.7.0,我该如何安装 Nokogiri?我需要安装早期版本的 Ruby 吗?

gem env 的结果是:

RubyGems Environment:
  - RUBYGEMS VERSION: 3.1.2
  - RUBY VERSION: 2.7.0 (2019-12-25 patchlevel 0) [x64-mingw32] …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems nokogiri

5
推荐指数
1
解决办法
4470
查看次数

我可以在Ruby中控制自定义对象的数组吗?

我有一个名为Thing的自定义类和一个Thing对象数组,如下所示:

class Thing
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def to_s
    @name
  end
end

a = []
a << Thing.new("Fred")
a << Thing.new("George")
a << Thing.new("Steve")
a
Run Code Online (Sandbox Code Playgroud)

当我在irb中查看数组时,我希望它看起来像这样:

[Fred, George, Steve]
Run Code Online (Sandbox Code Playgroud)

而不是这个(对象信息):[#,#,#]

换句话说,当我用irb查看数组时,我希望能够看到数组中每个元素的to_s值.有没有办法做到这一点?

ruby arrays

0
推荐指数
1
解决办法
38
查看次数

标签 统计

ruby ×4

arrays ×2

date ×1

enumeration ×1

join ×1

nokogiri ×1

proc ×1

rubygems ×1

sas ×1

sql ×1