扩展中的函数名称在 swift 中是否应该是唯一的
Is the function name in the extension should be really unique or not in swift
我想问一下 Swift 扩展函数的命名问题。
我有一个 UIViewController 的扩展文件,并在该文件中创建了一个名为 showAlert
的函数。我认为名称 showAlert 可能(或可能不会)在将来的更新中用作默认 Swift UIViewController 的方法,我想知道是否需要将函数名称更改为真正独特的名称,或者我不真的根本不需要更改名称。
如果 UIViewController 有一个名为 showAlert 的函数,在将来 Swift 更新时具有相同的参数,(我想这不会发生)并且我在扩展文件中有相同名称的函数,它是否会成为一个编译器错误?如果是这样,我可能需要将方法的名称更改为项目独有的名称。
以防万一,我的代码就像
extension UIViewController {
func showAlert(title: String?, message: String?, actions: [UIAlertAction], style: UIAlertController.Style, completion: (() -> Void)? = nil) {
let alert = UIAlertController(title: title, message: message, preferredStyle: style)
actions.forEach { alert.addAction([=11=])}
present(alert, animated: true, completion: completion)
}
}
像这样。
and I have the same name function in the extension file, is it going to be a compiler error?
是
I was wondering if I need to change the name of the function to something really unique
不,只要按照使您的代码最好的方式编写它即可。不要让你的代码变得丑陋只是为了让它具有防御性。
我认为您可能 运行 遇到的唯一问题是两个库是否都声明了相同的扩展。如果扩展是你自己写的,如果它重新声明一个已经存在的方法,你应该会得到一个错误。
我想问一下 Swift 扩展函数的命名问题。
我有一个 UIViewController 的扩展文件,并在该文件中创建了一个名为 showAlert
的函数。我认为名称 showAlert 可能(或可能不会)在将来的更新中用作默认 Swift UIViewController 的方法,我想知道是否需要将函数名称更改为真正独特的名称,或者我不真的根本不需要更改名称。
如果 UIViewController 有一个名为 showAlert 的函数,在将来 Swift 更新时具有相同的参数,(我想这不会发生)并且我在扩展文件中有相同名称的函数,它是否会成为一个编译器错误?如果是这样,我可能需要将方法的名称更改为项目独有的名称。
以防万一,我的代码就像
extension UIViewController {
func showAlert(title: String?, message: String?, actions: [UIAlertAction], style: UIAlertController.Style, completion: (() -> Void)? = nil) {
let alert = UIAlertController(title: title, message: message, preferredStyle: style)
actions.forEach { alert.addAction([=11=])}
present(alert, animated: true, completion: completion)
}
}
像这样。
and I have the same name function in the extension file, is it going to be a compiler error?
是
I was wondering if I need to change the name of the function to something really unique
不,只要按照使您的代码最好的方式编写它即可。不要让你的代码变得丑陋只是为了让它具有防御性。
我认为您可能 运行 遇到的唯一问题是两个库是否都声明了相同的扩展。如果扩展是你自己写的,如果它重新声明一个已经存在的方法,你应该会得到一个错误。