有没有可能让这个更短?
string = string.split
Ruby 有一些!
函数可以做到这一点,但是这个呢?
我想要像string.split这样的东西!但不要添加额外的 String 类方法
有没有可能让这个更短?
string = string.split
Ruby 有一些!
函数可以做到这一点,但是这个呢?
我想要像string.split这样的东西!但不要添加额外的 String 类方法
您必须为您的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
因此,要回答您的问题,不,您想要做的事情没有捷径可走,但我建议您重新考虑您的方法,除非keywords
能够像 aString
和 an一样Array
无后顾之忧。
只是 using"key words".split
会给你["key", "words"]
在一个类中使用的数组,就像你自己建议的那样
keywords = "key words"
class String
def -@
self.split
end
end
p -keywords #=> ["key", "words"]
顺便说一句,您知道"[%s]" % keywords
会产生相同的结果吗?