是否可以缩短它?
string = string.split
Ruby有一些!
函数可以做到这一点,但是这个怎么样?
我想要的东西像string.split!但是不要添加额外的String类方法
答案 0 :(得分:4)
您必须为self
类编写一个方法,该方法或多或少地完成了您的代码行。
def split_keywords!(sep = ' ')
@keywords = @keywords.split(sep)
end
问题是您要更改keywords
的内容(从String
更改为Array
),因此您必须编写与keywords
交互的所有其他方法所以无论是String
还是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
所以,为了回答你的问题,不,没有你希望做的事情的捷径,但我建议你重新考虑你的方法,除非keywords
能够像String
一样行事和Array
毫无后顾之忧。
答案 1 :(得分:1)
只需使用"key words".split
即可获得数组["key", "words"]
在一个类中使用,因为你的自我建议使它像
keywords = "key words"
class String
def -@
self.split
end
end
p -keywords #=> ["key", "words"]
顺便说一下,你知道"[%s]" % keywords
会产生相同的结果吗?