Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在F#中使用Akka.Streams.*.ConcatMany?_F#_Akka.net_Akka.net Streams - Fatal编程技术网

如何在F#中使用Akka.Streams.*.ConcatMany?

如何在F#中使用Akka.Streams.*.ConcatMany?,f#,akka.net,akka.net-streams,F#,Akka.net,Akka.net Streams,我想创建一个流,用传入的元素创建一个新的源(它将是一个持久性查询),然后将结果展平。类似于此简化示例: var z=Source.Single(1).ConcatMany(i=>Source.Single(i)); 这段代码按照预期编译和工作。我的问题是当我把它翻译成F#: 让z=Source.Single(1.ConcatMany)(乐趣i->Source.Single(i)) 我听到一个错误说 This expression was expected to have type '

我想创建一个流,用传入的元素创建一个新的源(它将是一个持久性查询),然后将结果展平。类似于此简化示例:

var z=Source.Single(1).ConcatMany(i=>Source.Single(i));
这段代码按照预期编译和工作。我的问题是当我把它翻译成F#:

让z=Source.Single(1.ConcatMany)(乐趣i->Source.Single(i))
我听到一个错误说

This expression was expected to have type
    'IGraph<SourceShape<'a>,Akka.NotUsed>'    
but here has type
    'Source<int,Akka.NotUsed>'    
此表达式应具有类型

'IGraph我发现的一个解决方法是使用包装器库:

打开Akkling.Streams
让x=
Source.singleton 1
|>Source.collectMap(乐趣x->Source.singleton x)
如何在没有Akkling的情况下执行此操作的问题仍然悬而未决。

看看,似乎
Source
IGraph
的一个直接实现,因此您应该能够将其转换为:

公共密封类来源:IFlow,IGraph

让z=Source.Single(1).ConcatMany(乐趣i->Source.Single(i):>IGraph)


我认为C#和F#用法之间的最大区别在于C#会自动为您进行向上转换。

这也适用于推断类型,如:
let z=Source.Single(1).ConcatMany(fun I->Source.Single(I):>
您也可以使用F#
upcast