我怎么写这个以便更容易理解?

vik*_*yat 2 ruby

是否存在以这样的方式编写这样的代码以使其更清晰的方式?

a = (a.split(" ")[1..-1]).join(" ")
Run Code Online (Sandbox Code Playgroud)

这删除了句子的第一个单词,但代码看起来根本没有表现力.

Jus*_* L. 5

a = a.split[1..-1] * " "
Run Code Online (Sandbox Code Playgroud)

说明

String#split的默认参数是""

Array * String 是别名 Array.join(String)

第二个想法,我不确定对于不熟悉红宝石的人来说它本身是否更透明.但是任何使用过Ruby字符串的人都会理解正在发生的事情.而且它比原始版本更干净.


UPDATE

根据我的正确意见的答案(你们都应该投票而不是我的投票),如果你运行的是Ruby 1.9.1(无论如何应该是这样)或Ruby 1.8.7,你可以这样做:

a = a.split.drop(1) * " "
Run Code Online (Sandbox Code Playgroud)


bje*_*lli 5

对于习惯阅读rexep的人来说这很干净:

a = a.sub(/^\S+\s/, "")
Run Code Online (Sandbox Code Playgroud)

因人而异


JUS*_*ION 5

irb(main):024:0> "this is a test".split.drop(1) * " "
=> "is a test"
Run Code Online (Sandbox Code Playgroud)

编辑添加:

说明:

  • 默认情况下,#split在空格上分隔.

  • #drop(1) 摆脱第一个条目.

  • * " "做同样的事#join(" ").