在Ruby中执行多重赋值时跳过第一个变量

在Ruby中执行多重赋值时跳过第一个变量,ruby,split,variable-assignment,Ruby,Split,Variable Assignment,我知道我可以拆分字符串,并在Ruby中的一行中将不同部分分配给不同的变量: a, b, c, d = "this is a string".split puts a # => "this" puts b # => "is" puts c # => "a" puts d # => "string" 但是,如果我不关心结果的前x部分,只想将后面的部分保存到变量中,该怎么办?例如,在上面的示例中,如果我想将“a”和“string”保存到变量,但不关心“this”和“is”,该

我知道我可以拆分字符串,并在Ruby中的一行中将不同部分分配给不同的变量:

a, b, c, d = "this is a string".split
puts a # => "this"
puts b # => "is"
puts c # => "a"
puts d # => "string"
但是,如果我不关心结果的前x部分,只想将后面的部分保存到变量中,该怎么办?例如,在上面的示例中,如果我想将“a”和“string”保存到变量,但不关心“this”和“is”,该怎么办


我意识到我可以保持我的代码原样,从不使用变量
a
b
,但这对我来说很难看。Ruby是否有更优雅的方法来实现这一点?

您可以使用
.slice
方法来获取最后2个元素

c, d  = "this is a string".split.slice(-2, 2)
有几种方法

_, _, a, b = "this is a string".split
或者


或者,真的,只是你想要的任何其他方式;它们都会做大致相同的事情,重要的是您要留给维护人员的语义。

我有一个稍微不同的情况,在我解析的字符串中,我关心的是“this”、“is”和“string”,而不是“a”。虚拟变量方法起作用了,但我很好奇是否有一种数组切片语法<代码>“这是一个字符串”。拆分[0,1,3]没有(错误:参数太多)


编辑:用一点挖掘回答了我自己的问题<代码>“这是一个字符串”。拆分。在(0,1,3)处设置值。\u将其放入答案中,以防其他人需要这种樱桃采摘。

使用一个你不关心的变量(例如
,\u,c,d=…
)或调整输入(例如
。=“这是一个字符串”。拆分()[2,-1]
)@user2864740,这是一种方法。请将此作为答案发布。这与@user2864740先前评论中的建议不一样吗?这两种方法都有效。我不知道您可以将参数传递给
split
。另外,我不喜欢“垃圾变量”选项,因为vim会给我一个“未使用的变量”警告,但事实证明它不会对
\uuu
这样做。完美@Georgeillo,只是想澄清一下,这不是
split
的“参数”,这是
split
@CarySwoveland结果的一个数组片段。首先,有人留下评论并不排除在回答中包含该评论。第二,我也给了他另一种方法,并且提到还有其他几种方法。你建议的方法与评论中的方法完全相同。你当然可以提出一个评论作为你的答案。问题是你是否应该。哦,不,请不要偷他宝贵的互联网点数!但是是的@Bandrami你是对的,我没有注意到那些是方括号而不是圆括号。
"this is a string".split[2, 3]