有没有办法在具有名称与全局函数相同的方法的类中调用全局函数?

时间:2015-11-26 01:12:30

标签: ios swift swift2

下面的代码给出了一个错误,因为它试图调用类的方法而不是全局函数:

func a(i: Int) -> Int {
    return i + 10
}

class B {
    func a(s: String) -> String {
       return s + "bbb"
    }

    func b() {
        print(a(100))   
        // Error (Cannot convert value of type 'Int' to expected argument type 'String')
    }
}

2 个答案:

答案 0 :(得分:6)

我的建议是将你的全局函数保存在这样的类中:

class Global {
   static func a(i: Int) -> Int {
      return i + 10
   }
}

class B {
   func a(s: String) -> String {
      return s + "bbb"
   }

   func b() {
      print(Global.a(100))
   }
}    

这样,您的代码更具可读性,并且不会让编译器感到困惑。

答案 1 :(得分:6)

是的,有。例如,如果您的应用名称是“myApp”,那么您可以调用全局函数,该函数的名称和参数数量与类B中的参数相同,如下所示:

func b()
{
    print(myApp.a(100))   
}