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}
而不是?