嵌套函数与委托没有相同的签名

时间:2016-10-04 15:29:45

标签: vb.net

我试图在VB中实现类似currying的效果。我希望能够做到这一点:

Dim wrap = WrapNumber("-")
wrap(5) 'returns "-5-"

这是我的功能:

Private Function WrapNumber(ByVal separator As String) As Func(Of Integer, String)

    Return Function(ByRef number As Integer) As String
               Return separator + number + separator
           End Function

End Function

我在Return行收到错误消息:

  

嵌套函数与委托Func(Of Integer, String)

的签名不同

我不确定为什么我会收到此错误。函数WrapNumber返回一个函数,该函数接受Integer并返回String,因此我可以看到它与Func中的WrapNumber具有相同的类型。 1}}签名。

1 个答案:

答案 0 :(得分:1)

如果你打开Option Strict On,它会显示很多出错的地方。除了注释中所述的不需要ByRef之外,连接还试图将分隔符视为double。如果您进行了这些更改,那么它可以正常工作:

Dim wrap = WrapNumber("-")
Dim test As String = wrap(5)
'test is equal to "-5-"

Private Function WrapNumber(ByVal separator As String) As Func(Of Integer, String)
    Return Function(number As Integer) As String
               Return separator & number.ToString & separator
           End Function
End Function
相关问题