我有一个数组,我只想选择两个指定值之间的元素.
例如,我有一个如下所示的数组:
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) 我想从块内访问枚举器的大小,如下所示:
["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) 如何在 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 中的第二条记录,该记录的“测试日期”与第一个数据集中的“给药日期”最接近(小于或等于)。
我最近升级到 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) 我有一个名为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值.有没有办法做到这一点?