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# 如何将seq中x的x转换为seq_F#_Seq_Argument Unpacking - Fatal编程技术网

F# 如何将seq中x的x转换为seq

F# 如何将seq中x的x转换为seq,f#,seq,argument-unpacking,F#,Seq,Argument Unpacking,这是一个后续问题 给定此代码块(csvData1是一个.csv文件。) 如果我不想将序列中的每个元素解压成x和第二个val,我们可以调用y,该怎么办。如何将x转换为序列,以便使用Seq.fst和Seq.snd 我知道可以打开这些元素的包装。我的问题是找到另一种方法来实现这一点,特别是考虑到x是一个系统。Tuple.x是一个由两个字符串组成的Tuple(这是我假设的csvRow.[I]是),因为这就是从序列中产生它的方式。您可以在for循环中对其进行分解: for (x,y) in mappedS

这是一个后续问题

给定此代码块(csvData1是一个.csv文件。)

如果我不想将序列中的每个元素解压成
x
和第二个val,我们可以调用
y
,该怎么办。如何将
x
转换为序列,以便使用
Seq.fst
Seq.snd


我知道可以打开这些元素的包装。我的问题是找到另一种方法来实现这一点,特别是考虑到
x
是一个系统。Tuple.

x
是一个由两个
字符串组成的Tuple(这是我假设的
csvRow.[I]
是),因为这就是
从序列中产生它的方式。您可以在
for
循环中对其进行分解:

for (x,y) in mappedSeq1 do
   printfn "%s - %s" x y

或者,如果不想对x进行分解,可以使用
fst x
snd x

您的代码当前创建了一个序列,该序列读取行并生成列2和列5的元组

如果要返回Row0Col2的序列;Row0Col5;Row1Col2;Row1Col5(两列需要为同一类型),然后使用

屈服![csvRow.[2],csvRow.[5]]

或者,如果您想要序列-[Row0Col2;Row0Col5];[Row1Col2;Ro1Col5],然后使用

收益率[csvRow.[2];csvRow.[5]


屈服
将从列表中生成每个单独的项目,而
yield
只会按顺序生成列表。

“什么是
x
?”您是否使用带有类型信息的开发工具?例如,在Visual Studio中,您可以通过将鼠标悬停在
x
上来查看它的类型。是的,x是一个System.Tuple,但我无法将代码构造为使用Seq.fst等等。我已经删除了OP的What is x部分。基本上,我希望在不解压缩的情况下从System.Tuple中提取第一个或第二个元素。这或多或少是一个学术要求。我只是想知道是否还有其他方法。你可以使用
fst
snd
而不是解构…调用
fst x
snd x
。元组不是
seq
fst
/
snd
来自
操作符
模块。没有
Seq.fst
,至少没有一个能满足您的要求。我不想对x进行解构。由于没有更好的方法来描述它,我想把x转换成Seq,所以我可以使用Seq的方法。我不太明白你想如何“把x转换成Seq”
x
是一个元组,而不是序列,因此不能将其“强制转换”为一个元组。你的意思是想创建一个包含两个元素的序列吗?然后,您只需制作一个列表
[x;y]
。你是说别的吗?
for (x,y) in mappedSeq1 do
   printfn "%s - %s" x y