文字列を1回だけ読み取ることで、Rubyの文字列からいくつかの情報を抽出したいと思います(O(n)時間計算量)。
次に例を示します。
文字列は次のようになります。-location here -time 7:30pm -activity biking
この情報を入力したいRubyオブジェクトがあります。すべてのキーワードは既知であり、それらはすべてオプションです。
def ActivityInfo
_attr_reader_ :location, :time, :activity
def initialize(str)
@location, @time, @activity = DEFAULT_LOCATION, DEFAULT_TIME, DEFAULT_ACTIVITY
# Here is how I was planning on implementing this
current_string = ""
next_parameter = nil # A reference to keep track of which parameter the current string is refering to
words = str.split
while !str.empty?
word = str.shift
case word
when "-location"
if !next_parameter.nil?
next_parameter.parameter = current_string # Set the parameter value to the current_string
current_string = ""
else
next_parameter = @location
when "-time"
if !next_parameter.nil?
next_parameter.parameter = current_string
current_string = ""
else
next_parameter = @time
when "-activity"
if !next_parameter.nil?
next_parameter.parameter = current_string
current_string = ""
else
next_parameter = @time
else
if !current_string.empty?
current_string += " "
end
current_string += word
end
end
end
end
つまり、基本的に、変数を別の変数またはメソッドの参照にする方法がわからないので、特定の値に設定できます。それとも、これを達成するための別のより効率的な方法がありますか?
ありがとう!