小编glw*_*art的帖子

Julia中的复合类型:字典作为命名字段?

我想创建一个包含字典作为其命名字段之一的复合类型.但明显的语法不起作用.我确信有一些基本的东西我不明白.这是一个例子:

type myType
    x::Dict()
end
Run Code Online (Sandbox Code Playgroud)

朱莉娅说:type: myType: in type definition, expected Type{T<:Top}, got Dict{Any,Any}我猜,这意味着字典不是Any任何命名字段必须的字典.但我不知道如何告诉它我的意思.

我需要一个字典的命名字段.内部构造函数将初始化字典.

dictionary composite-types julia

4
推荐指数
2
解决办法
363
查看次数

Julia中的构造函数:根据其他命名字段的输入值初始化命名字段

想象一个构造函数,它接受两个参数并使用两个参数的值初始化3个命名字段.像这样的东西:

type test1
   a
   b
   c
   test1(a,b) = new(a,b,a/b)
end
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但如果c的值不是这么简单的表达式呢?如果它超过一两行怎么办?或者是一个复杂的列表理解?将表达式c直接粘贴到表达式中new()是不实用的,并使代码更难以阅读(IMO).我宁愿做这样的事情:

type test1
   a
   b
   c = a/b
   test1(a,b) = new(a,b,c)
end
Run Code Online (Sandbox Code Playgroud)

ab没有定义,直到呼叫test1(a,b)明显,所以这是行不通的.也许我只是在寻找语法糖.无论如何,当构造函数的参数值变得​​已知并且在调用之前可以使用它们时,我想更好地理解new().

有没有更好的方法(比第一个例子更好)做我在第二个例子中尝试做的事情?

(我认为以下问题和它的答案足够相关,但我仍然是一个Julia新手在Julia构建一个非默认构造函数)

编辑:冒着过于具体的风险,我想我会把这个问题出现的实际用例包括在内.我正在做一个自适应集成方案.跨越整合边界的每个体积元素被进一步细分.我对"立方体"类型的定义如下.我的学生在python中编写了一个工作原型,但我试图在julia中重写它以获得性能提升.

using Iterators
# Composite type defining a cube element of the integration domain
type cube
    pos # floats: Position of the cube in the integration domain
    dx  # float: Edge length of the cube
    verts # float: List of positions of …
Run Code Online (Sandbox Code Playgroud)

constructor composite-types julia

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

标签 统计

composite-types ×2

julia ×2

constructor ×1

dictionary ×1