Kotlin有一个Sub Test()
Dim nameCount As Integer
Dim names() As String
Dim i As Integer
nameCount = -1
ReDim Preserve names(0 To 0)
For i = 2 To Sheet1.UsedRange.Rows.Count
If UBound(Filter(names, Sheet1.Range("C" & i).Value)) = -1 Then
nameCount = nameCount + 1
ReDim Preserve names(0 To nameCount)
names(nameCount) = Sheet1.Range("C" & i).Value
End If
Sheet1.Range("C" & i).EntireRow.Interior.colorIndex = Application.Match(Sheet1.Range("C" & i).Value, names, False)
Next i
End Sub
扩展函数,它接受任意两种类型的参数并返回A.to(that: B)
。现在我有一个Pair<A,B>
函数的类,需要两个参数。
基本上,两个不同的to
函数具有确切的语法,并且类中的函数被扩展名1掩盖。
示例:
to
Jooq转换器是一个相当流行的类,可以在Database兼容类和自定义类之间进行转换。
根据Kotlin的documentation,扩展函数优先于类方法,这对于kotlin包提供的扩展方法没有意义,因为它们的范围是全局的。有 qualified-this 解决方法来扩展扩展功能,但它似乎没有帮助
编辑:// following return Pair<k,v>
fun convert(value:K, converter: org.jooq.Converter<K,V>) = converter.to(value)
本身就是一个扩展功能。否则,成员函数优先。
答案 0 :(得分:1)
问题中所述的类型与Converter<K, V>.to
takes V
, not K
不符。所以converter.to(value)
解析为扩展方法只是因为它不能是成员方法。
当然,这意味着你自己的答案也行不通;可能你修改了一些类型,如果你现在尝试converter.to(value)
它应该可以工作。