下面的語句空字符串分配給search
變量。
search = "" unless search
本來這個任務不完成,Regexp.new
會拋出一個TypeError
有消息no implicit conversion of nil into String
,或者如果搜索沒有定義,那麼NameError
有消息未定義的局部變量或方法「搜索」 ......
在以下聲明:
matched_games = games.grep(Regexp.new(search))
games.grep(pattern)
返回與模式匹配的每個元素的數組。詳情請參閱grep。 Regexp.new(search)
使用提供的search
變量構造一個新的正則表達式,該變量既可以是字符串也可以是正則表達式模式。再次,對於進一步的細節,請參考Regexp::new
所以說,例如搜索""
(空字符串),然後返回Regexp.new(search)
//
,如果搜索=「超級馬里奧兄弟」那麼Regexp.new(search)
返回/Super Mario Bros./
。
現在的模式匹配:
# For search = "", or Regexp.new(search) = //
matched_games = games.grep(Regexp.new(search))
Result: matched_games = ["Super Mario Bros.", "Contra", "Metroid", "Mega Man 2"]
# For search = "Super Mario Bros.", or Regexp.new(search) = /Super Mario Bros./
matched_games = games.grep(Regexp.new(search))
Result: matched_games = ["Super Mario Bros."]
# For search = "something", or Regexp.new(search) = /something/
matched_games = games.grep(Regexp.new(search))
Result: matched_games = []
希望這是有道理的。
來源
2013-08-22 09:51:11
vee
它非常感謝thx你! – Ben2pop