-3

これを短くすることは可能ですか?

string = string.split

Rubyには!それを実現する関数がいくつかありますが、これはどうでしょうか。

string.splitのようなものが欲しい!ただし、Stringクラスメソッドを追加しないでください

4

2 に答える 2

4

selfコード行で行ったことと多かれ少なかれ正確に行うクラスのメソッドを作成する必要があります。

def split_keywords!(sep = ' ')
    @keywords = @keywords.split(sep)
end

これに関する問題は、 をkeywords( aStringから an にArray) 変更しているため、 と対話する他のすべてのメソッドを作成してkeywords、 aStringまたは anのいずれであっても機能するようにする必要があることArrayです。

split!メソッドがない理由は、メソッドStringの途中で変数をあるクラスから別のクラスに変更する必要があるためです。

# This will raise a SyntaxError
class String
    def split!(sep = ' ')
        self = self.split(sep) # Causes self to become an Array mid-method
    end
end

したがって、あなたの質問に答えるには、いいえ、あなたがやりたいことへの近道はありませんが、心配なくaと のkeywords両方のように振る舞うことができない限り、アプローチを再考することをお勧めします.StringArray

于 2012-12-26T21:47:20.490 に答える
1

使用するだけ で、クラスで使用される"key words".split配列が得られます。["key", "words"]

keywords = "key words"

class String
  def -@
    self.split
  end
end
p -keywords #=> ["key", "words"]

ちなみに、"[%s]" % keywords同じ結果になることをご存知ですか?

于 2012-12-26T22:02:59.560 に答える