fun TileSet.union(another: TileSet) : TileSet =
// ..
जावा 8 में, मैं इसे इस तरह कर सकता है:
@FunctionalInterface
public interface TileSet {
boolean contains(int x, int y);
public default TileSet unite(TileSet another) {
return (x, y) -> TileSet.this.contains(x, y) && another.contains(x, y);
}
}
तो एक अंतरफलक TileSet#unite()
में एक लैम्ब्डा के साथ किया जाता है।
public default TileSet unite(TileSet another) {
return new TileSet() {
@Override
public boolean contains(int x, int y) {
return TileSet.this.contains(x, y) && another.contains(x, y);
}
}
}
मैं Kotlin में एक एकल विधि इंटरफ़ेस का एक गुमनाम कार्यान्वयन कैसे बना सकते हैं: या यह वर्ष गुमनाम वर्ग दृष्टिकोण के साथ लागू किया जा सकता है?
मुझे पता है कि अगर मैं TileSet
के बजाय (Int, Int) -> Boolean
का उपयोग करता हूं, लेकिन मैं चाहता हूं कि इस प्रकार के फ़ंक्शन हस्ताक्षर की बजाय वर्णनात्मक नाम हो।
मुझे 'ऑब्जेक्ट को अमूर्त घोषित किया जाना चाहिए या अमूर्त सदस्य सार्वजनिक अमूर्त ऑपरेटर को लागू करना चाहिए।' क्यों? – Caipivara
@danielgomezrico यह होना चाहिए क्योंकि आपकी बेस क्लास/इंटरफ़ेस (मेरे उदाहरण में टाइलसेट ') एक अमूर्त विधि घोषित करता है, और आपको इसे अपने अनाम कार्यान्वयन में लागू करना चाहिए। – gvlasov