紅寶石自己執行
回答
你將不得不爲你的self
類寫一個方法,它或多或少地完成你的代碼行。
def split_keywords!(sep = ' ')
@keywords = @keywords.split(sep)
end
的問題,這是您要更改keywords
是什麼(從String
到Array
),所以你必須編寫與keywords
交互的所有其他方法,使他們將工作無論是String
或Array
。
究其原因,爲String
沒有split!
方法,因爲它會涉及從一個類改變變量到另一個法中旬。
# 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
與別擔心。
omfg ...我不要求創建新方法。無論CLASS是什麼,都無關緊要,關鍵字實例無關緊要! –
我要求一個較短的結構,像一個+ = 1縮短到a = a + 1 –
我理解你的問題和@peter,並且我已經盡最大努力做到了這樣一個短暫而無懈可擊的問題。但是,我在回答中告訴你的是,你想要的是不可能的。當涉及到一個結尾有爆炸方法的較短的構造時,比如'split!',如果bang方法將類從「String」變爲「Array」,那麼就沒有一個方法,這是一個什麼「分裂!」會做,而這就是爲什麼沒有。 –
只是用"key words".split
會給你的陣列["key", "words"]
用於一類爲你的自我暗示使它像
keywords = "key words"
class String
def [email protected]
self.split
end
end
p -keywords #=> ["key", "words"]
順便說一下,你知道"[%s]" % keywords
產生相同的結果?
我不想創造新的方法! omg –
請不要粗魯,我們儘量幫忙,看看我答案的第一部分,不能更短,下次更清楚,在你唯一的代碼行中使用self表明你使用類方法工作 – peter
對不起那個男人:)其實這是rails activerecord類的一部分。因此,任何方式都是有害的,請將其作爲keywords = keywords.split進行閱讀。所以我已經要求內置方法或結構像+ = 1 ...哦...像keywords = keywords.uniq可能像keywords.uniq!實現,你知道。所以我問,實際上ruby的構建像+ =但類方法?因爲!方法不是每個。 Thx –
- 1. 紅寶石自己放
- 2. 修改自己,紅寶石
- 3. 執行紅寶石
- 4. 紅寶石自己在外行方面?
- 5. 紅寶石 - 執行到期
- 6. 把自己得到的紅寶石
- 7. 紅寶石鞋執行另一個紅寶石程序
- 8. 紅寶石執行多行CMD串
- 9. 紅寶石的Net :: OpenTimeout:執行到期
- 10. sqlite3和紅寶石查詢執行
- 11. 黃瓜執行順序 - 紅寶石
- 12. 每個執行錯誤(紅寶石)
- 13. 從紅寶石內執行文件
- 14. 紅寶石+ Ubuntu的不RVM:在執行寶石...(GEM :: FilePermissionError)
- 15. 紅寶石寶石命令行工具
- 16. 紅寶石寶石不會運行
- 17. 紅寶石散列在紅寶石
- 18. 自定義as_json紅寶石
- 19. 紅寶石跟蹤自
- 20. 紅寶石消息自
- 21. 紅寶石寶石文檔
- 22. 寶石安裝紅寶石
- 23. 調試寶石紅寶石
- 24. 紅寶石程序寶石
- 25. 錯誤紅寶石寶石
- 26. Twitter的紅寶石寶石
- 27. 卸載紅寶石寶石
- 28. 紅寶石寶石 - LoadError
- 29. 紅寶石寶石LoadError
- 30. 安裝紅寶石寶石
什麼是自我? – knut
你想要多短?像a = b? – texasbruce
我希望它像+ = 1 –