在Swift 4语言中,与特定类型关联的函数称为"方法"。在Objective C中,类用于定义方法,而Swift 4语言为用户提供了具有类,结构和枚举方法的灵活性。
实例方法
在Swift 4语言中,可通过方法访问Class,Structures和Enumeration。
方法可以写在{}花括号内,它具有对类型的方法和属性的隐式访问,当调用该类型的特定时,它将可以访问该特定。
func funcname(Parameters) -> returntype { Statement1 Statement2 --- Statement N return parameters }
实例方法示例
class calculations { let a: Int let b: Int let res: Int init(a: Int, b: Int) { self.a=a self.b=b res=a + b } func tot(c: Int) -> Int { return res - c } func result() { print("Result is:\(tot(c: 20))") print("Result is:\(tot(c: 50))") } } let pri=calculations(a: 600, b: 300) pri.result()
运行上述程序时,我们得到以下输出-
Result is: 880 Result is: 850
类计算定义了两个方法-
- init() - 定义为将两个数字a和b相加并将其存储在输出'res'中
- tot() - 用于从传递" c"值中减去" res"
最后,调用打印带有a和b值的计算方法。方法用'.'访问。
本地和外部参数
Swift 4函数同时描述了其变量的局部和全局声明,同样,Swift 4 Methods的命名约定也类似于目标C的约定,但是,函数和方法的局部和全局参数名称声明的特征不同。 Swift 4中的第一个参数由介词名称称为" with"," for"和" by",以便于访问命名约定。
class division { var count: Int=0 func incrementBy(no1: Int, no2: Int) { count=no1/no2 print(count) } } let counter=division() counter.incrementBy(no1: 1800, no2: 3) counter.incrementBy(no1: 1600, no2: 5) counter.incrementBy(no1: 11000, no2: 3)
运行上述程序时,我们得到以下输出-
600 320 3666
带有#和_符号参数
即使Swift 4方法为本地声明提供了第一个参数名称,用户仍然可以将参数名称从本地声明修改为全局声明,这可以通过在"#"符号前添加第一个参数名称来完成。这样,可以在整个模块中全局访问第一个参数。
当用户需要使用外部名称访问后续参数名称时,方法名称将在'_'符号的帮助下被覆盖。
class multiplication { var count: Int=0 func incrementBy(no1: Int, no2: Int) { count=no1 * no2 print(count) } } let counter=multiplication() counter.incrementBy(no1: 800, no2: 3) counter.incrementBy(no1: 100, no2: 5) counter.incrementBy(no1: 15000, no2: 3)
运行上述程序时,我们得到以下输出-
2400 500 45000
self属性
方法的所有定义类型都具有一个称为"self"的隐式属性, 'Self'属性用于为其定义的方法引用当前。
class calculations { let a: Int let b: Int let res: Int init(a: Int, b: Int) { self.a=a self.b=b res=a + b print("Inside Self Block:\(res)") } func tot(c: Int) -> Int { return res - c } func result() { print("Result is:\(tot(c: 20))") print("Result is:\(tot(c: 50))") } } let pri=calculations(a: 600, b: 300) let sum=calculations(a: 1200, b: 300) pri.result() sum.result()
运行上述程序时,我们得到以下输出-
Inside Self Block: 900 Inside Self Block: 1500 Result is: 880 Result is: 850 Result is: 1480 Result is: 1450
修改值类型
在Swift 4中,语言结构和枚举属于值类型,不能通过其方法更改,但是,Swift 4语言提供了通过"mutating"行为来修改值类型的灵活性, Mutate将对方法进行任何更改,并在执行该方法后返回到原始形式,同样,通过'self'属性,将为其隐式函数创建新,并在执行后替换现有方法
struct area { var length=1 var breadth=1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { length *= res breadth *= res print(length) print(breadth) } } var val=area(length: 3, breadth: 5) val.scaleBy(res: 3) val.scaleBy(res: 30) val.scaleBy(res: 300)
运行上述程序时,我们得到以下输出-
9 15 270 450 81000 135000
可变self属性
结合" self"属性的可变方法会为定义的方法分配一个新。
struct area { var length=1 var breadth=1 func area() -> Int { return length * breadth } mutating func scaleBy(res: Int) { self.length *= res self.breadth *= res print(length) print(breadth) } } var val=area(length: 3, breadth: 5) val.scaleBy(res: 13)
当我们运行上述程序时,得到以下输出。 -
39 65
方法类型
当一个方法的特定实例被调用时,它被称为实例方法。当方法调用特定类型的方法时,称为“Type Methods"。“classes"的类型方法由"func"关键字定义,结构和枚举类型方法在"func"关键字之前由"static"关键字定义。
class Math { class func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } struct absno { static func abs(number: Int) -> Int { if number < 0 { return (-number) } else { return number } } } let no=Math.abs(number: -35) let num=absno.abs(number: -5) print(no) print(num)
运行上述程序时,得到以下输出。 -
35 5
参考链接
https://www.learnfk.com/swift/swift-methods.html
标签:Int,res,无涯,方法,let,func,print,Swift,Method From: https://blog.51cto.com/u_14033984/9464315