小编Gri*_*tty的帖子

Scala中嵌套列表的深度反转

我想在Scala中以递归方式反转列表列表.

我在Python中编写了深度列表反转,如下所示:

def deepReverse(items):
    if type(items) == list:
        return [deepReverse(item) for item in reversed(items)]
    else: 
        return items
Run Code Online (Sandbox Code Playgroud)

我如何在Scala中完成相同的操作?问题不在于算法 - 它是类型的东西,我是新的.

我需要函数将[T]或List [List [T]]的列表,或T的列表和Ts列表,任意深度.我尝试根据我在其他地方看到的一个例子来创建一个案例类.我不想要一个只返回Any并接受Any的函数; 感觉像是作弊.

case class NL[+T](val v : Either[List[NL[T]],T])
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是无法让我的类型得到平衡.我是Scala的新手,但我认为这是一个混乱递归和打字的绝佳机会.

recursion scala list

14
推荐指数
2
解决办法
833
查看次数

如何在puppet中安装两个名称相同但包含两个不同提供程序的程序包?

我正在尝试安装两件事:

一个名为"mongo"的PHP-PECL模块,以及一个名为"mongo"的yum包.他们需要使用"name"变量来知道包的真实名称是什么,但使用此名称创建的别名puppet使得无法处理多个提供者.

我知道我必须给他们不同的资源名称,所以很自然地,我这样做了:

package { "php-mongo" :
    ensure   => installed,
    provider => 'pecl',
    name     => 'mongo'
}

package { "yum-mongo" :
    ensure   => installed,
    provider => 'yum',
    name     => 'mongo'
}
Run Code Online (Sandbox Code Playgroud)

因为我收到错误:

Cannot alias Package[php-mongo] to ["mongo"] at /etc/puppet/environments/testing/modules/packages/manifests/install.pp:52; resource ["Package", "mongo"] already declared at /etc/puppet/environments/testing/modules/packages/manifests/install.pp:52
Run Code Online (Sandbox Code Playgroud)

如何在不修补stdlib的情况下完成这项工作?我是否需要修改我的提供程序,因此如果我将其包含在名称中以避免冲突,他们可以删除前置的"php-"?那看起来很蠢!

经过研究,这是一个古老的旧bug,但我找不到任何方法!

错误1398

谢谢!

packages puppet

5
推荐指数
1
解决办法
1294
查看次数

标签 统计

list ×1

packages ×1

puppet ×1

recursion ×1

scala ×1