有没有可能让这个更短?
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会产生相同的结果吗?