अंतर्निहित वर्ग के लिए अक्का धारा SubFlow (सामान्य पथ निर्भर प्रकार)

0

सवाल

मैं एक मुश्किल समय एक पाने के लिए implicit class के लिए एक akka.stream.scaladsl.SubFlow संकलन करने के लिए.

अपने परीक्षण कोड:

val subFlow = Source(List("1", "2", "3"))
  .groupBy(1, f)

val richSubFlow = new SideEffectfulSubFlowOps(subFlow)

val got = richSubFlow
  .withSideEffect((elem: String) => recordedItems.add(elem))
  .mergeSubstreams
  .to(Sink.seq)

/* In the end I would like to write it like this:
val got = Source(List("1", "2", "3"))
  .groupBy(1, f)
  .withSideEffect((elem: String) => recordedItems.add(elem))
  .mergeSubstreams
  .to(Sink.seq)
*/ 

अंतर्निहित वर्ग मैं इतनी दूर है.

  implicit class SideEffectfulSubFlowOps[+Out, +Mat, FOps <: FlowOps[Out, Mat], C](val enrichedSubFlow: SubFlow[Out, Mat, FOps#Repr, C]) extends AnyVal {

    def withSideEffect(f: Out => Unit): enrichedSubFlow.Repr[Out] = {
      enrichedSubFlow.map { o =>
        f(o)
        o
      }
    }
  }

दुर्भाग्य से मैं पता नहीं कर सकते, उचित जेनेरिक प्रकार को परिभाषित करने के लिए अस्पष्ट वर्ग है ।

संकलक त्रुटि:

[error] SubFlowExtensionsSpec.scala:21:43: type mismatch;
[error]  found   : akka.stream.scaladsl.SubFlow[String,akka.NotUsed,[+O]akka.stream.scaladsl.Source[O,akka.NotUsed],akka.stream.scaladsl.RunnableGraph[akka.NotUsed]]
[error]  required: akka.stream.scaladsl.SubFlow[?,?,?#Repr,?]
[error]       val x = new SideEffectfulSubFlowOps(subFlow)

पर देख रहे हैं की परिभाषा subflow: trait SubFlow[+Out, +Mat, +F[+_], C] extends FlowOps[Out, Mat] मैं समझ नहीं कैसे मैं करने के लिए की जरूरत को परिभाषित जेनेरिक प्रकार पर मेरे अस्पष्ट वर्ग है जो फिर रहे हैं के लिए प्रयोग किया जाता के प्रकार F और C के SubFlow.

1

सबसे अच्छा जवाब

0

की कोशिश का उपयोग करने के लिए उच्च-kinded प्रकार पैरामीटर के रूप में की परिभाषा में SubFlow

implicit class SideEffectfulSubFlowOps[+Out, +Mat, +FOps[+_], C](val enrichedSubFlow: SubFlow[Out, Mat, FOps, C]) extends AnyVal
2021-10-25 16:13:06

मैं पहले से ही की कोशिश की है और यह भी काम नहीं करता है. कंपाइलर त्रुटि: argument expression's type is not compatible with formal parameter type
leozilla

@leozilla नहीं reproduce कर सकते हैं. scastie.scala-lang.org/RlTubBvcTQadwh9S7dW7Kw कृपया प्रदान करते हैं पूरे नहीं करता है कि कोड को संकलित इस त्रुटि के साथ.
Dmytro Mitin

यदि आप परिवर्तन करने के लिए स्काला 2.12.12 यह संकलन नहीं करता है अब और नहीं. scastie.scala-lang.org/IIeRtsG1SImlxacl2HzZIA
leozilla

@leozilla समस्या के लिए लगता है कि हो सकता है के प्रकार parameterrs नहीं कर रहे हैं अनुमान लगाया. पहले मामले में (के साथ स्पष्ट कॉल) को बचाया जा सकता है निर्दिष्ट प्रकार पैरामीटर scastie.scala-lang.org/DmytroMitin/76yS2AG6SMGDrEZZDC9VdA समस्या आप कर सकते हैं निर्दिष्ट नहीं के साथ उन्हें विस्तार विधि है । मैं डर रहा हूँ बहुत ज्यादा नहीं किया जा सकता है यहाँ में 2.12.
Dmytro Mitin

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................