Tutorials Point, posted on 26th Sep, 2017

# Self Property for Mutating Method

```struct area {
var length = 1
func area() -> Int {
}
mutating func scaleBy(res: Int) {
self.length *= res
print(length)
}
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 13)```

Tutorials Point, posted on 26th Sep, 2017

# Modifying Value Types

```struct area {
var length = 1

func area() -> Int {
}
mutating func scaleBy(res: Int) {
length *= res
print(length)
}
}

var val = area(length: 3, breadth: 5)
val.scaleBy(res: 3)
val.scaleBy(res: 30)
val.scaleBy(res: 300)```

Tutorials Point, posted on 26th Sep, 2017

# Self property in Methods

```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()```

Tutorials Point, posted on 26th Sep, 2017

# External Parameter Name

```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)```

Tutorials Point, posted on 26th Sep, 2017

# Local and External Parameter Names

```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)```

Tutorials Point, posted on 26th Sep, 2017

# Instance Methods Example

```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()```

Tutorials Point, posted on 26th Sep, 2017

# Querying and Setting Properties

```struct StudMarks {
static let markCount = 97
static var totalCount = 0

var InternalMarks: Int = 0 {
didSet {
if InternalMarks > StudMarks.markCount {
InternalMarks = StudMarks.markCount
}
if InternalMarks > StudMarks.totalCount {
StudMarks.totalCount = InternalMarks
}
}
}
}

var stud1Mark1 = StudMarks()
var stud1Mark2 = StudMarks()

stud1Mark1.InternalMarks = 98
print(stud1Mark1.InternalMarks)

stud1Mark2.InternalMarks = 87
print(stud1Mark2.InternalMarks)```

Tutorials Point, posted on 26th Sep, 2017

# Computed Properties as Property Observers

```class Samplepgm {
var counter: Int = 0 {
willSet(newTotal){
print("Total Counter is: \(newTotal)")
}

didSet {
if counter > oldValue {
print("Newly Added Counter \(counter - oldValue)")
}
}
}
}

let NewCounter = Samplepgm()
NewCounter.counter = 100
NewCounter.counter = 800```

Tutorials Point, posted on 26th Sep, 2017

# Computed Properties as Read-Only Properties

```class film {
var duration = 0.0
var metaInfo: [String:String] {
return [
"duration":"\(self.duration)"
]
}
}

var movie = film()
movie.duration = 3.09

print(movie.metaInfo["duration"]!)```

Tutorials Point, posted on 26th Sep, 2017

# Computed Properties

```class sample {
var no1 = 0.0, no2 = 0.0
var length = 300.0, breadth = 150.0

var middle: (Double, Double) {
get {
return (length / 2, breadth / 2)
}

set(axis){
no1 = axis.0 - (length / 2)
no2 = axis.1 - (breadth / 2)
}
}
}

var result = sample()
print(result.middle)
result.middle = (0.0, 10.0)

print(result.no1)
print(result.no2)```