如何在Swift中创建私有函数?
下面是一个示例:
import UIKit
class AnotherClass {
var someVar = 1
let someConst = 2
func somePrivateFunc() -> Bool {
return true
}
func someFunc() -> (Int -> Bool) {
var someInnerFuncVar = { (num: Int)->Bool in
return true
}
return someInnerFuncVar
}
init() {
var vc = ViewController()
}
}
但如果这是唯一的办法...
发布于 2014-06-05 16:45:37
或者,您可以像这样使用Nested Classes
:
// Public interface
class Bakery
{
// Private implementation
class Baker
{
func prepareToMakeBread(numberOfLoafs:Int)
{
println("Preparing to make \(numberOfLoafs) loafs of bread...")
}
func bakeBread()
{
println("Baking the bread...")
}
func packageBread()
{
println("Packaging the freshly baked bread...")
}
}
// Public method
func buyBread(numberOfLoafs:Int)
{
println("Customer requests \(numberOfLoafs) loafs of bread!")
let baker = Bakery.Baker()
baker.prepareToMakeBread(numberOfLoafs)
baker.bakeBread()
baker.packageBread()
}
}
let bakery = Bakery()
bakery.buyBread(4)
输出:
Customer requests 4 loafs of bread!
Preparing to make 4 loafs of bread...
Baking the bread...
Packaging the freshly baked bread...
然而,从技术上讲,它们不是私有的,因为有人可以实例化Bakery.Baker
并调用方法。函数中的函数确实可以工作,但很难看...
发布于 2014-06-13 21:44:10
请参阅我的答案over here。
简而言之,当您谈到在Swift或ObjC (或ruby、java或…)中创建“私有方法”或“私有函数”时,这些方法并不是真正的“私有”。它们周围没有实际的访问控制。任何提供一点点自省的语言都可以让开发人员从类之外获得这些值,如果他们真的想要的话。
因此,我们正在讨论的是一种定义面向公众的接口的方法,它只显示我们想要的功能,并“隐藏”我们认为是“私有”的其余功能。
声明接口的快速机制是protocol
,它可以用于此目的。
https://stackoverflow.com/questions/24055258
复制相似问题