爲了打電話
MyClass::empty().empty
我是否需要在side MyClass中實現一個空方法?我會在裏面寫什麼?如何實現一些Ruby概念?之後,我不知道如何這樣的電話可以工作:
x = MyClass::empty().add("a").add("b")
這將是簡單地調用Add方法,如果它是空的?
0
A
回答
2
你會在裏面寫什麼?你想要它做什麼?
您將有一個名爲empty
的類方法,該方法返回一個具有empty
方法的方法,該方法(a)不帶參數或(b)讓它們默認。
class MyClass
def self.empty
return WithEmpty.new # Or existing WithEmpty
end
end
它還需要返回一些有add
方法的東西,並返回它自己。
class WithEmpty
def initialize
@a_list = []
end
def add x
@a_list << x
self
end
def empty
@a_list.empty?
end
end
如果你描述了你正在做的事情,它會更容易/更快。這並不明顯。
pry(main)> MyClass::empty()
=> #<WithEmpty:0xa01a090 @a_list=[]>
pry(main)> MyClass::empty().empty
=> true
pry(main)> MyClass::empty.empty
=> true
pry(main)> MyClass::empty.add("hi").add("bye")
=> #<WithEmpty:0x9fc8d1c @a_list=["hi", "bye"]>
現在,你有沒有直接的辦法讓「內部」類的列表中,除非你在任一MyClass
保存它(粗略的,因爲該方法是類,而不是實例方法),或您保存返回來自最後一串鏈接方法的值。
但是,如果您保存該實例,那麼通過MyClass
來做什麼呢?再次,我忍不住想你需要確定你實際想要完成的事情,而不是專注於如何實現它。目標是什麼?
首先,有一個陣列沒有「添加」方法。你描述,到目前爲止,還沒有什麼意義,除非你的意思是這樣:
class MyClass
def self.empty
return MyClass.new
end
def initialize
@arr = []
end
def empty
@arr.empty?
end
def add x
@arr << x
self
end
end
然後:
pry(main)> MyClass.empty
=> #<MyClass:0x9aea390 @arr=[]>
pry(main)> MyClass.empty.add("ohai").add("kthxbai")
=> #<MyClass:0x99f505c @arr=["ohai", "kthxbai"]>
但再次:你是混合類和實例方法的方式我不覺得有意思。你想如何訪問數組? MyClass
是什麼意思?爲什麼不使用數組?
pry(main)> a = []
=> []
pry(main)> a.empty?
=> true
pry(main)> a << "ohai" << "kthxbai"
=> ["ohai", "kthxbai"]
pry(main)>
pry(main)> a.empty?
=> false
沒有什麼MyClass
的目的是,告訴你實現它一個合理的方式任何指引是很難的,因爲沒有上下文,你已經證明不使一個很大的意義是什麼。
相關問題
- 1. MVC實現概念(概念(ABAP SAP)
- 2. oop概念實現
- 3. HashMap實現概念
- 4. rapidminer一些概念
- 5. Boost.geometry實現Polygon概念
- 6. 一些邏輯OOP概念
- 7. 瞭解一些概念
- 8. 概念實例
- 9. Ruby OOP正確的概念?
- 10. 實驗IDE概念
- 11. ORM實體概念
- 12. Android增強現實(AR)概念
- 13. 在Haskell中實現這個OO概念
- 14. jmeter中的起搏概念實現
- 15. 在rails中實現虛擬概念
- 16. iphone中的增強現實概念
- 17. 虛擬現實和動感概念
- 18. 在Javascript中實現線程概念?
- 19. 實現C++概念的編譯器
- 20. 在Java中實現Friend概念
- 21. std :: vector的概念和GCC實現
- 22. WebRTC - 幫我理解一些概念
- 23. 線程上的一些概念問題
- 24. 困惑於一些DDD概念
- 25. 關於Mulesoft的一些概念問題
- 26. 試圖瞭解一些Java概念
- 27. 依賴注入中的一些概念
- 28. 一些基本的oracle概念
- 29. 請求澄清一些HDFS概念
- 30. 如何從使用概念搜索的概念洞察中發現概念的地方開始?
'MyClass :: empty()。empty'會返回什麼?爲什麼不簡單地使用'MyClass :: empty()'? – Reactormonk
我剛剛學習Ruby,並且學習了一些我可以從後面找到Ruby類的例子。 MyClass :: empty()。empty將返回true或false。我不知道爲什麼.empty而不是空的,但是這不僅僅是該方法是否返回某些內容或者是否訪問其屬性的問題? – antonpug
什麼類型會empty()返回? –