F# 如何将seq中x的x转换为seq
这是一个后续问题 给定此代码块(csvData1是一个.csv文件。) 如果我不想将序列中的每个元素解压成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
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