我偶然發現了一個問題,即編譯「不能以下候選人中選擇」時,我指的是rng.max
其中rng:IntRange
:微分曖昧擴展在科特林
inline val <T:Comparable<T>> ClosedRange<T>.max get() = endInclusive // max of range
inline val <T:Comparable<T>> Iterable<T>.max get():T? = max() // max element
我想這是因爲IntRange
同時實現ClosedRange
和(間接通過IntProgression
)Iterable
。
如果我想寫一個單個擴展功能將適用於所有的IntRange
,LongRange
和CharRange
(可能但不一定通過擴展ClosedRange
),在那裏我可以添加任何語法,將明確解析ClosedRange
而不是類似命名Iterable
擴展在這種情況下?