小编ZoS*_*Sal的帖子

"Lambda with Receiver":这个Kotlin构造是什么?

我正在看这个Kotlin对象声明:

object A : B({
    variableName1 = "text1"
    variableName2 = "text2"

    params {
        param("Foo", "Bar")
    }
})
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚B类构造函数的参数是什么.

我有目的地在这个例子中抽象出信息,但实际上是B类

jetbrains.buildServer.configs.kotlin.v10.BuildType
Run Code Online (Sandbox Code Playgroud)

我找不到该类型的文档.我发现了一些接近的东西,但它是一个接口的定义,因此没有构造函数.

总而言之,Kotlin的以下构造是什么?

{
    variableName1 = "text1"
    variableName2 = "text2"

    params {
        param("Foo", "Bar")
    }
}
Run Code Online (Sandbox Code Playgroud)

dsl lambda receiver kotlin

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

为什么这个Kotlin对象可以继承自己?

我正在尝试使用Kotlin与TeamCity进行交互.

当您将项目转换为Kotlin(来自.xml)时,您将拥有一个名为Project.kt的文件,您可以在其中设置所有配置.

没有编辑我的看起来像这样:

object Project : Project(/* Some Function Literal with Receiver */)
Run Code Online (Sandbox Code Playgroud)

这看起来像循环继承?我省略了进口产品,但肯定不会产生那么大的差别吗?是否可以根据文件中出现的位置以不同方式解释名称?

我的想法是解释对象签名,如下所示:

  • object =单例的对象声明.
  • 项目(第一次出现)=对象名称.
  • : =继承标记.
  • 项目(第二次出现)=要继承的基类.
  • () =构造函数调用基类.

这是循环继承还是我错过了关于Kotlin的一些重大事件?我看过这里这里,似乎无法找到我的答案.

teamcity kotlin

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

仅使用networkx设置节点(子图)的等级

我一直在仅使用Networkx库通过Python构建图形。我的程序nx.drawing.nx_pydot.to_pydot()通过在点对象上调用write_png(“ output.png”)使用.vi 文件输出.dot文件,并使用点引擎通过Graphviz绘制该文件。

我的点文件可能如下所示:

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
}
Run Code Online (Sandbox Code Playgroud)

我要添加点文件如下:

strict digraph  {
a;
b;
c;
a -> b;
a -> c;
{rank=same; a b};
}
Run Code Online (Sandbox Code Playgroud)

因为在前一种情况下b和c绘制在a下方,而在后一种情况下c绘制在a和b下方,它们处于同一水平。

我在文档中找不到如何进行此简单更改。我知道这与声明一个子图并设置其属性相同,但是我正在努力的部分是设置该子图的rank属性。

构建完我的图形后,以下代码将处理输出。

DG = myGraphBuildFunction(dictOfEdges)
p = nx.drawing.nx_pydot.to_pydot(DG)
p.write_png('example.png')
nx.drawing.nx_pydot.write_dot(DG, "Output.dot")
print("Graph Generated")
Run Code Online (Sandbox Code Playgroud)

如何从这里轻松设置某些节点的等级?我想避免使用pygraphviz库,但使用graphviz库很好。Pygraphviz 不会通过Windows轻松安装pip install,我需要保持该程序“易于使用和维护”,因为我不是唯一可能使用它的人。

python networkx

5
推荐指数
0
解决办法
397
查看次数

简化凸包

我的问题如下:我有一个凸包,看起来可能像这样: 生凸包

我想将显着接近的点分组在一起,以某种形式的平均值表示,例如可以是均值或中位数。 平均凸包

我更专注于如何进行分组。

如何系统地进行分组?

我了解这似乎是一个非常简单的问题,答案很明显。我的主要问题是尝试解决这个问题,最终遇到一些极端情况,例如答案会根据我在船体上的位置而变化。例如,如果我从红线开始并沿顺时针方向工作,则最终会得到结果(如果我未尝试抓住极端情况):

从这里开始在此处输入图片说明

我为此进行了许多尝试,每当我重新考虑自己的想法时,我都会得到一个笨拙的新型角壳。我习惯于找到解决问题的最不直观的方法,因此我认为最好向社区询问。我现在遇到的问题的一个比较示例是,我被要求在排序数组中查找一个元素,而我最初正在执行线性搜索,但我有一种直觉,感觉那里还有更好的东西。

我无法找到我想要的研究成果。我发现了简化船体的算法,但它太大地改变了船体的形状,这不适合我的程序目标。

最后,我将在此处添加注释,说明我将OpenCV与C ++结合使用,以在我正在处理的项目上生成凸包。以防万一,这是一个值得保留的细节(以及为什么我添加OpenCV作为标签)。

algorithm opencv

3
推荐指数
1
解决办法
610
查看次数

标签 统计

kotlin ×2

algorithm ×1

dsl ×1

lambda ×1

networkx ×1

opencv ×1

python ×1

receiver ×1

teamcity ×1