假设您在Julia中定义了一个新的复合类型以及该类型的变量:
type MyType
?::Int64
?::Vector{Float64}
?::Float64
MyType(?::Int64, ?::Vector{Float64}, ?::Float64) = new(?, ?, ?)
end
mt = MyType(5, [1.2, 4.1, 2], 0.2)
Run Code Online (Sandbox Code Playgroud)
现在,如果您处于REPL模式,只需mt输入mt并按Enter 即可查看值:
mt
MyType(5,[1.2,4.1,2.0],0.2)
Run Code Online (Sandbox Code Playgroud)
如果我想自定义MyType显示变量的方式,我可以定义一个函数并使用它customized_display(mt):
function customized_display(me::MyType)
println("MyType")
println("?:$(me.?), ?:$(me.?), ?:$(me.?)")
end
customized_display(mt)
MyType
?:5, ?:[1.2,4.1,2.0], ?:0.2
Run Code Online (Sandbox Code Playgroud)
但是使用另一个显示值的函数mt似乎是多余的.我需要扩展哪个功能,只需输入mt,就会显示自定义显示?
我有一个简单的问题应该有一个简单的答案,但我还没想到它.我想一次处理一个数组,一定数量的元素,然后回绕到开头.
这是一个图表,显示n每次需要10和3个元素时:
到目前为止,我尝试编写一个简单的迭代失败了:使用% n给我零,这不适用于Julia的一个索引...... :)
我试图在 Julia 中创建一个字符串文字宏来创建一个symbol,所以它s"x"与:x. 这是行不通的:
julia> macro s_str(p)
symbol(p)
end
julia> s'x'
ERROR: s not defined
julia> s"x"
ERROR: x not defined
Run Code Online (Sandbox Code Playgroud) 我有一个球拍列表清单,必须转置它们.
(: transpose ((list-of(list-of %a)) -> (list-of (list-of %a))))
(check-expect (transpose (list (list 1 2 3)
(list 4 5 6)))
(list (list 1 4)
(list 2 5)
(list 3 6)))
(define transpose
(lambda (xs)
(cond
((empty? xs)empty)
((pair? xs)(make-pair (make-pair (first(first xs)) (make-pair (first(first(rest xs)))empty)) (transpose (rest(rest xs))))))))
Run Code Online (Sandbox Code Playgroud)
那是我目前的代码.我认为问题在于递归调用(如果我错了请纠正我).
实际结果是(list (list 1 4)).其余的似乎有点被忽视了.
如果有人知道这个问题,或者有小费,这对我有帮助.
说,我有一个类型层次结构
abstract A
immutable B <: A end
immutable C <: A end
Run Code Online (Sandbox Code Playgroud)
A以下工厂模式的构造函数:
function A(x::Int)
if x > 0
B()
else
C()
end
end
Run Code Online (Sandbox Code Playgroud)
它根据预期的输入返回不同的子类型.但是,它也是类型不稳定,因为我找不到强制返回类型的方法A.
那么,这里有工厂模式是不是很糟糕?类型不稳定性是否仅影响不可变类型而不是可变类型,因为后者无论如何都是引用类型.
我必须为此选择参数类型吗?
immutable D{T <: A}
type::T
end
function D(x::Int)
if x > 0
D(B())
else
D(C())
end
end
Run Code Online (Sandbox Code Playgroud)
感觉有点糟糕.
实际上,类型不稳定的功能有多糟糕?是否值得交易以获得更好的代码可读性?
或者,我应该定义typealias A Union{B,C}吗?
如何处理JuMP中的稀疏矩阵?
例如,假设我想施加以下形式的约束:
A * x == 0
Run Code Online (Sandbox Code Playgroud)
其中A是稀疏矩阵和x变量向量。我认为A可以利用 的稀疏性来加快优化速度。我如何在 JuMP 中利用这一点?
官方文件说:
连接和字符串插值调用
string()将对象转换为字符串形式
但是,以下最低工作示例似乎证明了其他情况:
type MyType
x::Int
end
import Base.string
Base.string(m::MyType) = "world"
m = MyType(4)
println("hello $m")
println("hello " * string(m))
Run Code Online (Sandbox Code Playgroud)
第二行最后一行评估为hello MyType(4)REPL,而最后一行评估(按预期)为hello world.
那么我做错了什么?
(我仍然在v0.4,但官方文档版本表明不应该有任何区别.)
我试图使用Julia估计使用N个观察数据点(存储为Float64数字数组)的连续单变量分布,然后从该估计分布中进行采样.我没有先前的知识限制对某些发行家族的关注.
我正在考虑使用KernelDensity包来估计分布,但我不确定如何从结果输出中进行采样.
任何帮助/提示将不胜感激.
对于类,我必须编写一个函数,该函数接受正整数 n 并返回方案中 n\xe2\x80\x99s 奇数位的总和。到目前为止,我的基本情况是,如果 n 等于 0,则 0。但我不确定如何继续。
\n\n(define sumOddDigits\n (lambda (n)\n (if (= n 0)\n 0\nRun Code Online (Sandbox Code Playgroud)\n\n测试用例:
\n\n(sumOddDigits 0) \xe2\x86\x92 0\n(sumOddDigits 4) \xe2\x86\x92 0\n(sumOddDigits 3) \xe2\x86\x92 3\n(sumOddDigits 1984) \xe2\x86\x92 10\nRun Code Online (Sandbox Code Playgroud)\n 我对朱莉娅很陌生。我正在尝试求解非线性方程组以找到向量 ( p_new)。下面是我的问题的简化版本。问题是我收到此消息:"ERROR: MethodError: no method matching zero(::, Type{Any})"。我不确定是否是因为初始条件没有明确定义。提前致谢!
p_1 = [ 1, 2, 2.3]
p_1b = [ 1, 2.2, 2.5]
mgc = [1, 1, 0.5]
theta = 0.8
OW1 = [0 1 0; 1 1 1; 0 0 1]
g = ones(3,1)
function pupdate!(p_1,mgc,theta,OW1)
delt = p_1.*theta
delt = 2.718281828459.^delt
Sp1 = sum(delt)
sp1 = delt./Sp1
markup = p_1 .- mgc
sp1 .= markup
end
g0 = [p_1b, mgc, theta, OW1]
p_new = nlsolve(pupdate!, g0)
Run Code Online (Sandbox Code Playgroud)