- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在以纯函数式的方式实现一个 javascript 光线转换多边形中的点算法(背后没有特别的原因)。
我被卡住了,因为我需要从二维数组中获取两个数组(复制元组列表);类似于 Haskell 的 unzip
。
是否有可能从类似[[a,b],[c,d],[e,f]]
开始获得[[a,c,e] ,[b,d,f]]
不使用过程式迭代器?
(我知道这是一个微不足道的问题,我可以按程序实现该功能然后忘记它,但我很想知道是否有解决方案)
编辑:澄清一下,我知道如何实现 zip
和 unzip
:我想知道是否可以在没有 for
的情况下实现它们> 循环和变量重新分配。
最佳答案
您的解压缩只是一个 zip,但有多个参数。大多数人不只使用相同功能的唯一原因是大多数时候 zip
接收可变参数列表而不是数组,因此您需要使用 apply
解包在解压缩函数中。
在我正在使用的库 Dojo 中,它们实现了 zip 和 unzip as
unzip: function(/*Array*/ a){
// summary: similar to dojox.lang.functional.zip(), but takes
// a single array of arrays as the input.
// description: This function is similar to dojox.lang.functional.zip()
// and can be used to unzip objects packed by
// dojox.lang.functional.zip(). It is here mostly to provide
// a short-cut for the different method signature.
return df.zip.apply(null, a);
}
zip: function(){
// summary: returns an array of arrays, where the i-th array
// contains the i-th element from each of the argument arrays.
// description: This is the venerable zip combiner (for example,
// see Python documentation for general details). The returned
// array is truncated to match the length of the shortest input
// array.
var n = arguments[0].length,
m = arguments.length,
i = 1,
t = new Array(n),
j,
p;
for(; i < m; n = Math.min(n, arguments[i++].length));
for(i = 0; i < n; ++i){
p = new Array(m);
for(j = 0; j < m; p[j] = arguments[j][i], ++j);
t[i] = p;
}
return t;
},
请注意 zip 接收多个参数,因此它更像 Python zip 而不是 Haskell zip。
将此代码转换为没有变量赋值的“纯函数式”风格应该不难。您现有的代码应该已经在处理我发布的示例中前两个 for 的工作(以最小长度 chop zip 并遍历其中一个列表的索引)。剩下的就是对第三个 for 做类似的事情——从列表列表中收集第 i 个值,而不是从两个列表中收集两个值。
关于javascript - 是否有可能以纯函数式的方式实现 Haskell 的 unzip 的 js 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519509/
我有一个包含许多 zip 文件的文件夹。我需要获取这些 zip 文件中的任何一个,将其解压缩并从压缩文件中获取特定文件。我为此使用 IO::Uncompress::Unzip 模块。我的 perl 脚
如果我有一个三元组列表,我想要三个单独的列表。还有比这更好的方法吗: (listA, listB, listC) = (list.map(_._1), list.map(_._2). list.map
有人可以帮我移植我的代码吗void * uzFile = unzOpen("zip 文件名"); 使用 minizip 中的 unzOpenCurrentFilePassword 吗?我想用密码保护我
我编写了一段简单的代码,用于使用 unzip 提取 zip 文件。当未设置输出目录时它工作正常但返回错误是目录已设置 "Archive: /home/vishvesh.kumar/tempFolder
我正在尝试解压缩位于 Android 设备的 SDCARD 上的文件。如果 ZIP 文件只包含文件而不包含文件夹,则一切正常。但是,我希望应用程序解压缩的生产文件包含多个目录和子目录。这是我遇到问题的
您好,我已经从 Windows 7 创建并将其放入服务器。现在我正在将文件从服务器下载到我的 SD 卡中。但是当我开始解压缩时它显示错误, java.util.zip.ZipException: E
我正在尝试使用 yauzl 解压缩文件。然而 example in the repo不显示如何解压缩到文件夹。它只是说: readStream.pipe(somewhere); 有没有一种简单的方法可
我有一个 foo: seq 我想拆分元组项,然后将结果存储到两个变量中,每个变量是 seq 我想知道是否有更漂亮的方法来做到这一点,例如 let item1, item2 = foo |> ?????
标准库在List上提供了unzip方法: scala>val l = List((1, "one"), (2, "two"), (3, "three"), (4, "four"), (5, "five
Minizip 有没有办法直接从缓冲区中提取文件?通常你会使用一个 unzFile 实例,但这对我来说不是一个选项(我直接在缓冲区中获取压缩数据,我不从磁盘读取它)。 最佳答案 来自 the auth
本文整理了Java中jodd.io.ZipUtil.unzip()方法的一些代码示例,展示了ZipUtil.unzip()的具体用法。这些代码示例主要来源于Github/Stackoverflow/M
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 6年前关闭。 Improve this
因此,我有这个元组列表(n = 2),我应该“解压”巫婆,然后创建一个新的列表,如下所示:对于类似val的元组列表,它=(1,“一个”):: (2,“two”):: nil:(int,string)a
我有以下代码,其中 fac 返回 (MyType, OtherType): let l = (-1..13).map(|x| { fac(x).0 }).collect::>(); 它有效,但
我有几个zip文件,我想在其他路径中解压缩,只解压缩具有某些特征的文件,所以我在linux中执行以下命令: unzip -q -o ./path1/*/"*.zip" Key/* -d /path2/
我的程序使用 HTTP 通过网络读取 gzipped 文件。 我需要我的程序能够解压缩内容并解析它,即使不是所有的 gzip 文件都到达了。 可以吗? 如果是这样,可以用 C++ 完成吗?如果是,怎么
我发现以下行为出乎意料: $ mkdir tmp && cd tmp/ $ for example in a b c ; do echo $example > $example.txt ; done
我正在使用 npm 的 unzip 模块来提取 zip 存档的内容。我需要知道它何时完成提取以及文件已完全写入磁盘。 我的代码: fs.createReadStream('master.zip').p
本文整理了Java中io.fabric8.utils.Zips.unzip()方法的一些代码示例,展示了Zips.unzip()的具体用法。这些代码示例主要来源于Github/Stackoverflo
本文整理了Java中org.jboss.as.patching.ZipUtils.unzip()方法的一些代码示例,展示了ZipUtils.unzip()的具体用法。这些代码示例主要来源于Github
我是一名优秀的程序员,十分优秀!