आदेश में की तरह कुछ पूछना है?बूलियन विधियां?</p> <pre><code>MyClass::create().empty? </code></pre> <p>मैं कैसे MyClass भीतर <code>empty</code> सेट अप करना होगा:
खाली (सत्य/गलत) इस बात पर निर्भर करता है कि कक्षा परिवर्तनीय @arr
खाली है या नहीं।
आदेश में की तरह कुछ पूछना है?बूलियन विधियां?</p> <pre><code>MyClass::create().empty? </code></pre> <p>मैं कैसे MyClass भीतर <code>empty</code> सेट अप करना होगा:
खाली (सत्य/गलत) इस बात पर निर्भर करता है कि कक्षा परिवर्तनीय @arr
खाली है या नहीं।
प्रश्न चिह्न, वास्तव में विधि नाम का हिस्सा है ताकि आप इस करना होगा:
class MyClass
def empty?
@arr.empty? # Implicitly returned.
end
end
वास्तव में एक ही जैसा कि मैंने पिछले पोस्ट में पता चला है, लेकिन एक अलग विधि नाम के साथ।
पहले, create
को empty?
विधि के साथ कुछ वापस करना होगा। उदाहरण के लिए:
class MyClass
def self.create
[]
end
end
यदि आप अपने आखिरी सवाल के अनुसार MyClass
के उदाहरण पर काम करना चाहते हैं:
class MyClass
def self.create
MyClass.new
end
def initialize
@arr = []
end
def empty?
@arr.empty?
end
def add x
@arr << x
self
end
end
यहाँ एक सरणी से संबंधित कोई सरल आवरण के रूप में MyClass
कार्य करता है, एक add
विधि प्रदान करते हैं।
pry(main)> MyClass.create.empty?
=> true
आपको यह जांचने की भी आवश्यकता हो सकती है कि @arr शून्य है या नहीं। यह खाली की आपकी कक्षा परिभाषा पर निर्भर करता है।
def empty?
[email protected] || @arr.empty?
end
आप सरणी के लिए अपने वर्ग से empty?
को सौंपने के लिए Forwardable
इस्तेमाल कर सकते हैं:
require "forwardable"
class MyClass
extend Forwardable
def_delegators :@arr, :empty?
def initialize(arr)
@arr = arr
end
end
my_object = MyClass.new([])
my_object.empty? # => true
क्या आपका मतलब है * वर्ग चर * '@@ arr' या * उदाहरण चर *' @ arr'? – maerics
रुबी में, 'प्रारंभिक' है जिसे 'MyClass.new' द्वारा बुलाया जाता है। – Reactormonk
"रुबी में, प्रारंभ होता है जिसे MyClass.new द्वारा बुलाया जाता है"। माना। और रूबी में इसका पालन करना अच्छा होता है; जब आप अपने रूबी चप्पल पर हों तो पीले ईंट की सड़क पर चिपके रहें। –