阅读BioSeq.jl的源代码我发现他们使用这样的函数:
aminoacid{T<:Number}(value::T) = convert(AminoAcid, value)
此函数通过执行转换来创建AminoAcid
类型的新对象。此函数是否被视为构造函数(因此应将其命名为AminoAcid
而不是aminoacid
)?
答案 0 :(得分:0)
功能上,是的,aminoacid
方法正在进行构造函数的工作。鉴于0.4-dev中的调用过载改进,尤其如此,其中所有类型都具有非常相似的default constructor fallback to convert
。
似乎Julian风格正在逐渐远离这些小写构造函数,特别是当它们只是进行转换时。请参阅示例Issue #9155: in 0.4, is Symbol("foobar")
canonical?。
以下是使用小写方法(Comment by Steven G. Johnson on Interact.jl#17: lower case widget functions)时的一个很好的经验法则:
小写版本,如
int(...)
,是(a)转换中更具强制性(无InexactErrors)和(b)可能不返回相应类型的内容。例如int([1.0, 3.7])
工作并返回一个整数数组。另请参阅JuliaLang/julia#1470。