如果函数使用convert(Julia),它是一个构造函数吗?

时间:2014-12-19 14:33:48

标签: constructor type-conversion julia

阅读BioSeq.jl的源代码我发现他们使用这样的函数:

aminoacid{T<:Number}(value::T) = convert(AminoAcid, value)

此函数通过执行转换来创建AminoAcid类型的新对象。此函数是否被视为构造函数(因此应将其命名为AminoAcid而不是aminoacid)?

1 个答案:

答案 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