मैंने इस cats का उपयोग करते हुए स्कैला कोड देखा। io/post/practical-scala-cats-applicative-functor/" rel="nofollow noreferrer">पोस्ट.

val a = Some(7)
val b = Some(9)
Applicative[Option].ap2(Some(add))(a,b)

और मैंने इस कोड को कोटलिन में माइग्रेट करने और निम्नलिखित की तरह तीर चलाने का प्रयास किया।

Option.applicative()
        .tupled(Some(7), Some(9))
        .ap(Some(::add))

// works but dirty
fun add(tuple: Tuple2<Int, Int>): Int = tuple.a + tuple.b

// not work, compilation error
// fun add(a: Int, b: Int): Int = a + b

जैसा कि आपने देखा, Tuple2 को add फ़ंक्शन हस्ताक्षर में निर्दिष्ट किया जाना चाहिए। मैंने तीर के आधिकारिक दस्तावेज़ की खोज की, लेकिन एपी 2, एपी 3, एपी 4 जैसा कोई apN फ़ंक्शन नहीं है।

क्या दूसरे फ़ंक्शन का उपयोग करने का कोई तरीका है जिसमें Tuple2 प्रकार शामिल नहीं है?

0
galcyurio 10 जुलाई 2019, 09:23

1 उत्तर

सबसे बढ़िया उत्तर

एक बार संस्करण 0.10 उपलब्ध हो जाने पर एरो में फ़ंक्शन प्रकारों पर एक .tupled() विधि होगी जो इसे संभालती है, जिससे आप लिख पाएंगे:

Option.applicative()
      .tupled(Some(7), Some(9))
      .ap(::add.tupled())

fun add(a: Int, b: Int) = a + b

22 तर्कों तक के कार्यों के लिए।

1
BobG 29 जुलाई 2019, 16:02