protocol SomeProtocol {
// definisikan protocol di sini
}
struct SomeStructure: FirstProtocol, AnotherProtocol {
// definisikan structure di sini
}
class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
// definisikan class di sini
}
protocol SomeProtocol {
var mustBeSettable: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}
protocol AnotherProtocol {
static var someTypeProperty: Int { get set }
}
protocol FullyNamed {
var fullName: String { get }
}
struct Person: FullyNamed {
var fullName: String
}
let john = Person(fullName: "John Appleseed")
// john.fullName is "John Appleseed"
class Starship: FullyNamed {
var prefix: String?
var name: String
init(name: String, prefix: String? = nil) {
self.name = name
self.prefix = prefix
}
var fullName: String {
return (prefix != nil ? prefix! + " " : "") + name
}
}
var ncc1701 = Starship(name: "Enterprise", prefix: "USS")
// ncc1701.fullName is "USS Enterprise"
protocol SomeProtocol {
static func someTypeMethod()
}
protocol RandomNumberGenerator {
func random() -> Double
}
class LinearCongruentialGenerator: RandomNumberGenerator {
var lastRandom = 42.0
let m = 139968.0
let a = 3877.0
let c = 29573.0
func random() -> Double {
lastRandom = ((lastRandom * a + c)
.truncatingRemainder(dividingBy:m))
return lastRandom / m
}
}
let generator = LinearCongruentialGenerator()
print("Here's a random number: \(generator.random())")
// Prints "Here's a random number: 0.3746499199817101"
print("And another one: \(generator.random())")
// Prints "And another one: 0.729023776863283"
protocol Togglable {
mutating func toggle()
}
enum OnOffSwitch: Togglable {
case off, on
mutating func toggle() {
switch self {
case .off:
self = .on
case .on:
self = .off
}
}
}
var lightSwitch = OnOffSwitch.off
lightSwitch.toggle()
// lightSwitch is now equal to .on
protocol SomeProtocol {
init(someParameter: Int)
}
class SomeClass: SomeProtocol {
required init(someParameter: Int) {
// initializer implementation statements
}
}
protocol tcpprotocol {
init(aprot: Int)
}
class tcpClass: tcpprotocol {
required init(aprot: Int) {
}
}
import Foundation
protocol tcpprotocol {
init(a: Int)
}
class mainClass {
var a: Int // local storage
init(a: Int) {
self.a = a // initialization
}
}
class subClass: mainClass, tcpprotocol {
var b: Int
init(a: Int, b : Int) {
self.b = b
super.init(a:a)
}
// Hanya membutuhkan satu parameter untuk convenient method
required override convenience init(a: Int) {
self.init(a:a, b:0)
}
}
let resultMainClass = mainClass(a: 30)
let resultSubClass = subClass(a: 50, b: 60)
print("result is: \(resultMainClass.a)")
print("result is: \(resultSubClass.a)")
print("result is: \(resultSubClass.b)")
result is: 30
result is: 50
result is: 60