尝试调用max(_:_ :)函数时,“无法调用非函数类型的值”错误

时间:2016-08-06 21:09:11

标签: swift generics

我正在尝试调用max函数:max(x: T, y: T)。但是,当我输入max(2,3)时,我一直收到以下错误:

  
    

错误:无法调用非函数类型Int的值     var a = max(2,3)

  

我是初学者,我从未遇到过使用类型“T”的函数签名。与使用max函数相关的SO线程以我的方式调用它(如max(2,3))所以我不确定我哪里出错了。

我正在寻找关于“T”的解释以及如何调用支持泛型类型的函数以及如何在比较整数2和3时使max函数返回3。

2 个答案:

答案 0 :(得分:8)

问题(如you've confirmed in the comments)是您定义了一个名为max的变量,导致与函数max(_:_:)发生命名冲突。

因此,解决方案是指定Swift模块名称空间(作为George suggested),以消除您引用max(_:_:)函数的事实:

Swift.max(2, 3)

或者,您最好考虑重命名变量。我强烈怀疑你能给它一个更具描述性的名字(记住,the Swift API Design Guidelines有利于清晰而简洁)。

答案 1 :(得分:2)

您是否在扩展程序Int中调用max?

尝试Swift.max(2,3)。