Как я могу написать это, чтобы было легче понять? - PullRequest
2 голосов
/ 26 июня 2010

Есть ли способ написать код таким образом, чтобы сделать его понятнее?

a = (a.split(" ")[1..-1]).join(" ")

Это удаляет первое слово в предложении, но код совсем не выглядит выразительным.

Ответы [ 6 ]

5 голосов
/ 26 июня 2010
irb(main):024:0> "this is a test".split.drop(1) * " "
=> "is a test"

Отредактировано, чтобы добавить:

Объяснение:

  • По умолчанию #split разделители для пробелов.

  • #drop(1) избавляется от первой записи.

  • * " " делает то же самое, что и #join(" ").

5 голосов
/ 26 июня 2010

для кого-то, кто привык читать rexep, это довольно чисто:

a = a.sub(/^\S+\s/, "")

YMMV

5 голосов
/ 26 июня 2010

код

a = a.split[1..-1] * " "

объяснение

String#split По умолчанию установлено значение ""

Array * String это псевдоним для Array.join(String)

Если подумать, я не уверен, что он будет более прозрачным для того, кто не знаком с ruby, по сути.Но любой, кто немного поработал со строками Ruby, поймет, что происходит.И это намного более чисто, чем оригинальная версия.


ОБНОВЛЕНИЕ

Согласно просто-мое-правильное мнение ответ (который вы все должны проголосовать вместо моего), если вы используете Ruby 1.9.1 (каким вы должны быть в любом случае) или Ruby 1.8.7, вы можете сделать:

a = a.split.drop(1) * " "
3 голосов
/ 26 июня 2010

возможно, если сделать процесс явным, поможет

words = a.split
words.pop
a = words.join " "
2 голосов
/ 26 июня 2010

И если вы использовали это в некотором коде, вы можете создать методы в String и Array, чтобы сделать ваш код читабельным.(работает в 1.8.6 тоже)

class String
  def words
    split
  end
end

class Array
  def but_first
    self[1..-1]
  end
  def to_sentence
    join(' ')
  end
end

str = "And, this is a sentence"

puts str.words.but_first.to_sentence
1 голос
/ 26 июня 2010

Что-то вроде следующего

a = a[a.index(' '), a.length-(a.index(' ')+1)]

Не проверять, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...