4
说,我有一个类型层次不稳定型和工厂构造
abstract A
immutable B <: A end
immutable C <: A end
的A
构造如下工厂模式:
function A(x::Int)
if x > 0
B()
else
C()
end
end
它作为预期收益基础上,输入不同的亚型。但是,它也是不稳定的,因为我找不到强制返回类型为A
的方法。
那么,这里有工厂模式不好吗?类型不稳定性只影响不可变类型而不是可变类型,因为后者是引用类型。
我必须为此选择参数类型吗?
immutable D{T <: A}
type::T
end
function D(x::Int)
if x > 0
D(B())
else
D(C())
end
end
这感觉有点不好。
其实,类型不稳定的函数有多糟?是否值得交换更好的代码可读性?
或者,我应该定义typealias A Union{B,C}
而不是?