SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Introduction to Swift
@RoelCastano
June 23, 2014
Swift vs Objective-C
#include <stdio.h>
int main()

{

	 printf(“hello, worldn”);

	 return 0;

}
println(“hello, world”)
Variables
let dogName: String = “Cinnamon”
!
var age: Double = 8.5
!
var inferredType = “String”
!
let 🐝 = “Bee”
for character in “string” {
	 println(character)
}
// s
// t
// r
// i
// n
// g
!
———————————————-
!
let a = 3, b = 5
let stringResult = “(a) times (b) is (a * b)”
more strings
var variableSting = “Apple”
variableString += “ and Pixar”
// variableString is now “Apple and Pixar”
!
let constantString = “Apple”
constantString += “ and Microsoft”
// constant can’t be changed
!
//casting

let label = "The width is "

let width = 94_000_00

let widthLabel: String = label + String(width)
!
Optionals and TypeAlias
//Optionals
!
var dogAge = "123".toInt()
if dogAge { //is either nil or Int
    dogAge! //now it is an Int
}
!
var someValue: String?
someValue = "Fido"
!
someValue = nil
//typealias
!
typealias 👬 = Double
var size: 👬 = 12.2
!
typealias Point = (Int, Int)
let origin: Point = (0, 0)
Tuples
//unnamed tuples
var luckyNumbers: = (3, 8, 21)
luckyNumbers.2
//21
!
//named tuples
var myDog:(Int, Int, Bool) = (age: 8, isAFemale: true)
var (age,_) = myDog
age
//6
!
!
Arrays
/*
Notes:
These arrays can only be of one types, not like
NSArray or NSDictionary, which can have any object.
*/
!
//array (String[] optional)
let emptyArray = String[]()
!
var shoppingList: String[] = ["catfish", "water", "tulips", "blue paint"] //prefered
var numberList: Array<Int> = [1,2,3,4,5]
var numberList2 = [11,22,33,44,55] //preferred
!
shoppingList.append("milk")
!
for (index, object) in enumerate(shoppingList){
println("The object #(index) is a (object)")
}
!
var possibleNames = Array(count: 10, repeatedValue: "BRO")
Dictionaries
//dictionary
let emptyDictionary = Dictionary<String, Float>()
!
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"
occupations.updateValue("Chief", forKey:"Malcolm")
occupations.removeValueForKey("Kaylee")
occupations
!
var employees = Array(occupations.keys)
!
for (name, occupation) in occupations
{
println("Name: (name) n Occupation: (occupation)")
}
!
If-Else and Switch
// If-Else
!
var optionalString: String? =
"Hello"
optionalString == nil
!
var optionalName: String? = nil
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello, (name)"
} else {
let name = String("Some Name")
}
// Switch
!
let vegetable = "red pepper"
switch vegetable {
!
case “celery":
let vegetableComment = "Add some
raisins and make ants on a log.”
!
case "cucumber", "watercress":
let vegetableComment = "That would
make a good tea sandwich.”
!
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a
spicy (x)?”
!
default:
let vegetableComment = "Everything
tastes good in soup.”
}
For Loop
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5,
8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
var largestKind:String? = nil
for (kind, numbers) in
interestingNumbers {
for number in numbers {
if number > largest {
largest = number
largestKind = kind
}
}
}
largest //25
largestKind //square
var firstForLoop = 0
for i in 0..3 {
firstForLoop += i
}
firstForLoop // 3
!
————————————————————————————————
!
var firstForLoop = 0
for i in 0...3 {
secondForLoop += i
}
secondForLoop // 6
Functions
func count(string: String) -> (vowels: Int, consonants: Int, others: Int) {
var vowels = 0, consonants = 0, others = 0
for character in string {
switch String(character).lowercaseString {
case "a", "e", "i", "o", "u":
++vowels
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
"n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
++consonants
default:
++others
}
}
return (vowels, consonants, others)
}
!
let total = count("some arbitrary string!")
let finalString = "(total.vowels) vowels and (total.consonants)
consonants"
// prints "6 vowels and 13 consonants"
Functions and Generics
func swapTwoInts(inout a: Int, inout b: Int) {
let temporaryA = a
a = b
b = temporaryA
}
!
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
let newInts = "someInt is now (someInt), and anotherInt is now
(anotherInt)"
// prints "someInt is now 107, and anotherInt is now 3"
Generics
!
func swapTwoValues<T>(inout a: T, inout b: T) {
let temporaryA = a
a = b
b = temporaryA
}
!
var designer = "Lentes"
var programmer = "Alice"
swapTwoValues(&designer, &programmer)
let newTeam = "designer is now (designer), and programmer is
now (programmer)"
// prints "designer is now Alice, and programmer is now Lentes"
Structures vs Classes
Consider Structure when:
Encapsulate simple data values
Values would be copied rather
than referenced.
Any properties stored by the
structure are themselves value
types.
Ex. Geometric Shapes,
Coordinates, Person.
Consider Classes when:
Inheritance should be used.
Need more than one
reference to the same
instance
Check or Interpret the type
of a class at runtime
Ex. Real life complex objects.
Classes
class Vehicle {
var numberOfWheels: Int
var maxPassengers: Int
func description() -> String {
return "(numberOfWheels) wheels; up to (maxPassengers) passengers"
}
init() {
numberOfWheels = 0
maxPassengers = 1
}
}
class Bicycle: Vehicle {
init() {
super.init()
numberOfWheels = 2
}
}
class Tandem: Bicycle {
init() {
super.init()
maxPassengers = 2
}
}
let tandem = Tandem()
println("Tandem: 
(tandem.description())”)
// Tandem: 2 wheels; up to 2
passengers
Method Overriding
class Car: Vehicle {
var speed: Double = 0.0
init() {
super.init()
maxPassengers = 5
numberOfWheels = 4
}
override func description() -> String {
return super.description() + "; "
+ "traveling at (speed) mph"
}
}
let car = Car()
println("Car: (car.description())")
// Car: 4 wheels; up to 5 passengers; traveling at 0.0 mph
Property Overriding
class SpeedLimitedCar: Car {
override var speed: Double {
get {
return super.speed
}
set {
super.speed = min(newValue, 40.0)
}
}
}
!
let limitedCar = SpeedLimitedCar()
limitedCar.speed = 60.0
println("SpeedLimitedCar: (limitedCar.description())")
// SpeedLimitedCar: 4 wheels; up to 5 passengers; traveling at 40.0 mph
Structs
struct Color {
let red = 0.0, green = 0.0, blue = 0.0
init(red: Double, green: Double, blue: Double) {
self.red = red
self.green = green
self.blue = blue
}
}
!
!
let magenta = Color(red: 1.0, green: 0.0, blue: 1.0)
!
Protocols
protocol FullyNamed {
var fullName: String { get }
}
!
struct Person: FullyNamed {
var fullName: String
}
!
let john = Person(fullName: "John Appleseed")
// john.fullName is "John Appleseed"
!
more protocols
!
!
protocol RandomNumberGenerator {
func random() -> Double
}
!
class Dice {
let sides: Int
let generator: RandomNumberGenerator
init(sides: Int, generator: RandomNumberGenerator) {
self.sides = sides
self.generator = generator
}
func roll() -> Int {
return Int(generator.random() * Double(sides)) + 1
}
}
!
protocol TextRepresentable {
func asText() -> String
}
!
extension Dice: TextRepresentable {
func asText() -> String {
return "A (sides)-sided dice"
}
}
Facts
First app built on Swift was the WWDC App.
You can use Swift, C, and Objective-C in parallel.
The book “The Swift Programming Language” was
downloaded 370,000 times on one day.
References
Swift Tutorial Part 3: Tuples, Protocols, Delegates, and
Table Views. http://www.raywenderlich.com/75289/swift-
tutorial-part-3-tuples-protocols-delegates-table-views
An Introduction To Object-Oriented Programming in Swift.
http://blog.codeclimate.com/blog/2014/06/19/oo-swift/
A Few Interesting Things In Swift http://
www.slideshare.net/SmartLogic/a-few-interesting-
things-in-swift

Contenu connexe

Tendances

Swift language seminar topic
Swift language seminar topicSwift language seminar topic
Swift language seminar topicHyacinth Okeke
 
Deep dive into swift UI
Deep dive into swift UIDeep dive into swift UI
Deep dive into swift UIOsamaGamal26
 
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...Edureka!
 
Functional Programming in Swift
Functional Programming in SwiftFunctional Programming in Swift
Functional Programming in SwiftSaugat Gautam
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? Shady Selim
 
Swift in SwiftUI
Swift in SwiftUISwift in SwiftUI
Swift in SwiftUIBongwon Lee
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programmingHariz Mustafa
 
Presentation on Function in C Programming
Presentation on Function in C ProgrammingPresentation on Function in C Programming
Presentation on Function in C ProgrammingShuvongkor Barman
 
FUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPTFUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPT03062679929
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator OverloadingNilesh Dalvi
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Martin Odersky
 
C# programming language
C# programming languageC# programming language
C# programming languageswarnapatil
 
SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019Lea Marolt Sonnenschein
 

Tendances (20)

Swift language seminar topic
Swift language seminar topicSwift language seminar topic
Swift language seminar topic
 
Deep dive into swift UI
Deep dive into swift UIDeep dive into swift UI
Deep dive into swift UI
 
Swift Introduction
Swift IntroductionSwift Introduction
Swift Introduction
 
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...
Swift Tutorial For Beginners | Swift Programming Tutorial | IOS App Developme...
 
Interface
InterfaceInterface
Interface
 
Basics of c++
Basics of c++Basics of c++
Basics of c++
 
Functional Programming in Swift
Functional Programming in SwiftFunctional Programming in Swift
Functional Programming in Swift
 
Introduction to flutter
Introduction to flutter Introduction to flutter
Introduction to flutter
 
Introduction to c++ ppt 1
Introduction to c++ ppt 1Introduction to c++ ppt 1
Introduction to c++ ppt 1
 
Flutter Intro
Flutter IntroFlutter Intro
Flutter Intro
 
What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How? What is Kotlin Multiplaform? Why & How?
What is Kotlin Multiplaform? Why & How?
 
Swift in SwiftUI
Swift in SwiftUISwift in SwiftUI
Swift in SwiftUI
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programming
 
Presentation on Function in C Programming
Presentation on Function in C ProgrammingPresentation on Function in C Programming
Presentation on Function in C Programming
 
VB.net
VB.netVB.net
VB.net
 
FUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPTFUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPT
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator Overloading
 
Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009Scala Talk at FOSDEM 2009
Scala Talk at FOSDEM 2009
 
C# programming language
C# programming languageC# programming language
C# programming language
 
SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019SwiftUI For Production | try! Swift 2019
SwiftUI For Production | try! Swift 2019
 

Similaire à Introduction to Swift programming language.

Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기
Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기
Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기Suyeol Jeon
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to PerlSway Wang
 
NUS iOS Swift Talk
NUS iOS Swift TalkNUS iOS Swift Talk
NUS iOS Swift TalkGabriel Lim
 
A Brief Intro to Scala
A Brief Intro to ScalaA Brief Intro to Scala
A Brief Intro to ScalaTim Underwood
 
A Few Interesting Things in Apple's Swift Programming Language
A Few Interesting Things in Apple's Swift Programming LanguageA Few Interesting Things in Apple's Swift Programming Language
A Few Interesting Things in Apple's Swift Programming LanguageSmartLogic
 
Adding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxAdding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxJeff Strauss
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftMichele Titolo
 
Bologna Developer Zone - About Kotlin
Bologna Developer Zone - About KotlinBologna Developer Zone - About Kotlin
Bologna Developer Zone - About KotlinMarco Vasapollo
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. ExperienceMike Fogus
 
An Introduction to Scala (2014)
An Introduction to Scala (2014)An Introduction to Scala (2014)
An Introduction to Scala (2014)William Narmontas
 
An Intro To ES6
An Intro To ES6An Intro To ES6
An Intro To ES6FITC
 

Similaire à Introduction to Swift programming language. (20)

Swift Study #7
Swift Study #7Swift Study #7
Swift Study #7
 
Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기
Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기
Swift - 혼자 공부하면 분명히 안할테니까 같이 공부하기
 
Kotlin
KotlinKotlin
Kotlin
 
Pooya Khaloo Presentation on IWMC 2015
Pooya Khaloo Presentation on IWMC 2015Pooya Khaloo Presentation on IWMC 2015
Pooya Khaloo Presentation on IWMC 2015
 
Introduction to Perl
Introduction to PerlIntroduction to Perl
Introduction to Perl
 
NUS iOS Swift Talk
NUS iOS Swift TalkNUS iOS Swift Talk
NUS iOS Swift Talk
 
A Brief Intro to Scala
A Brief Intro to ScalaA Brief Intro to Scala
A Brief Intro to Scala
 
A Few Interesting Things in Apple's Swift Programming Language
A Few Interesting Things in Apple's Swift Programming LanguageA Few Interesting Things in Apple's Swift Programming Language
A Few Interesting Things in Apple's Swift Programming Language
 
Scala 2 + 2 > 4
Scala 2 + 2 > 4Scala 2 + 2 > 4
Scala 2 + 2 > 4
 
Adding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer ToolboxAdding ES6 to Your Developer Toolbox
Adding ES6 to Your Developer Toolbox
 
Intro to ruby
Intro to rubyIntro to ruby
Intro to ruby
 
Cocoa Design Patterns in Swift
Cocoa Design Patterns in SwiftCocoa Design Patterns in Swift
Cocoa Design Patterns in Swift
 
Bologna Developer Zone - About Kotlin
Bologna Developer Zone - About KotlinBologna Developer Zone - About Kotlin
Bologna Developer Zone - About Kotlin
 
Naïveté vs. Experience
Naïveté vs. ExperienceNaïveté vs. Experience
Naïveté vs. Experience
 
An Introduction to Scala (2014)
An Introduction to Scala (2014)An Introduction to Scala (2014)
An Introduction to Scala (2014)
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Php & my sql
Php & my sqlPhp & my sql
Php & my sql
 
Introduction kot iin
Introduction kot iinIntroduction kot iin
Introduction kot iin
 
An Intro To ES6
An Intro To ES6An Intro To ES6
An Intro To ES6
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
 

Plus de Icalia Labs

Building an Api the Right Way
Building an Api the Right WayBuilding an Api the Right Way
Building an Api the Right WayIcalia Labs
 
Agile practices for management
Agile practices for managementAgile practices for management
Agile practices for managementIcalia Labs
 
Building something out of Nothing
Building something out of NothingBuilding something out of Nothing
Building something out of NothingIcalia Labs
 
Furatto tertulia
Furatto tertuliaFuratto tertulia
Furatto tertuliaIcalia Labs
 
Simple but Useful Design Principles.
Simple but Useful Design Principles.Simple but Useful Design Principles.
Simple but Useful Design Principles.Icalia Labs
 
Your time saving front end workflow
Your time saving front end workflowYour time saving front end workflow
Your time saving front end workflowIcalia Labs
 
Customer Experience Basics
Customer Experience BasicsCustomer Experience Basics
Customer Experience BasicsIcalia Labs
 
Time Hacks for Work
Time Hacks for WorkTime Hacks for Work
Time Hacks for WorkIcalia Labs
 
Culture in a team
Culture in a teamCulture in a team
Culture in a teamIcalia Labs
 
Presentacion vim
Presentacion vimPresentacion vim
Presentacion vimIcalia Labs
 
Using github development process in your company
Using github development process in your companyUsing github development process in your company
Using github development process in your companyIcalia Labs
 
The Art of Pitching
The Art of PitchingThe Art of Pitching
The Art of PitchingIcalia Labs
 
Rails Best Practices
Rails Best PracticesRails Best Practices
Rails Best PracticesIcalia Labs
 
Introduccion meteor.js
Introduccion meteor.jsIntroduccion meteor.js
Introduccion meteor.jsIcalia Labs
 

Plus de Icalia Labs (16)

Building an Api the Right Way
Building an Api the Right WayBuilding an Api the Right Way
Building an Api the Right Way
 
Agile practices for management
Agile practices for managementAgile practices for management
Agile practices for management
 
Building something out of Nothing
Building something out of NothingBuilding something out of Nothing
Building something out of Nothing
 
Furatto tertulia
Furatto tertuliaFuratto tertulia
Furatto tertulia
 
Simple but Useful Design Principles.
Simple but Useful Design Principles.Simple but Useful Design Principles.
Simple but Useful Design Principles.
 
Your time saving front end workflow
Your time saving front end workflowYour time saving front end workflow
Your time saving front end workflow
 
Customer Experience Basics
Customer Experience BasicsCustomer Experience Basics
Customer Experience Basics
 
Time Hacks for Work
Time Hacks for WorkTime Hacks for Work
Time Hacks for Work
 
Culture in a team
Culture in a teamCulture in a team
Culture in a team
 
Curso rails
Curso railsCurso rails
Curso rails
 
Presentacion vim
Presentacion vimPresentacion vim
Presentacion vim
 
Using github development process in your company
Using github development process in your companyUsing github development process in your company
Using github development process in your company
 
The Art of Pitching
The Art of PitchingThe Art of Pitching
The Art of Pitching
 
Rails Best Practices
Rails Best PracticesRails Best Practices
Rails Best Practices
 
Introduccion meteor.js
Introduccion meteor.jsIntroduccion meteor.js
Introduccion meteor.js
 
Rspec and Rails
Rspec and RailsRspec and Rails
Rspec and Rails
 

Dernier

Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024Mind IT Systems
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 

Dernier (20)

Top Software Development Trends in 2024
Top Software Development Trends in  2024Top Software Development Trends in  2024
Top Software Development Trends in 2024
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Salesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptxSalesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptx
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 

Introduction to Swift programming language.

  • 2. Swift vs Objective-C #include <stdio.h> int main()
 {
 printf(“hello, worldn”);
 return 0;
 } println(“hello, world”)
  • 3. Variables let dogName: String = “Cinnamon” ! var age: Double = 8.5 ! var inferredType = “String” ! let 🐝 = “Bee” for character in “string” { println(character) } // s // t // r // i // n // g ! ———————————————- ! let a = 3, b = 5 let stringResult = “(a) times (b) is (a * b)”
  • 4. more strings var variableSting = “Apple” variableString += “ and Pixar” // variableString is now “Apple and Pixar” ! let constantString = “Apple” constantString += “ and Microsoft” // constant can’t be changed ! //casting
 let label = "The width is "
 let width = 94_000_00
 let widthLabel: String = label + String(width) !
  • 5. Optionals and TypeAlias //Optionals ! var dogAge = "123".toInt() if dogAge { //is either nil or Int     dogAge! //now it is an Int } ! var someValue: String? someValue = "Fido" ! someValue = nil //typealias ! typealias 👬 = Double var size: 👬 = 12.2 ! typealias Point = (Int, Int) let origin: Point = (0, 0)
  • 6. Tuples //unnamed tuples var luckyNumbers: = (3, 8, 21) luckyNumbers.2 //21 ! //named tuples var myDog:(Int, Int, Bool) = (age: 8, isAFemale: true) var (age,_) = myDog age //6 ! !
  • 7. Arrays /* Notes: These arrays can only be of one types, not like NSArray or NSDictionary, which can have any object. */ ! //array (String[] optional) let emptyArray = String[]() ! var shoppingList: String[] = ["catfish", "water", "tulips", "blue paint"] //prefered var numberList: Array<Int> = [1,2,3,4,5] var numberList2 = [11,22,33,44,55] //preferred ! shoppingList.append("milk") ! for (index, object) in enumerate(shoppingList){ println("The object #(index) is a (object)") } ! var possibleNames = Array(count: 10, repeatedValue: "BRO")
  • 8. Dictionaries //dictionary let emptyDictionary = Dictionary<String, Float>() ! var occupations = [ "Malcolm": "Captain", "Kaylee": "Mechanic", ] occupations["Jayne"] = "Public Relations" occupations.updateValue("Chief", forKey:"Malcolm") occupations.removeValueForKey("Kaylee") occupations ! var employees = Array(occupations.keys) ! for (name, occupation) in occupations { println("Name: (name) n Occupation: (occupation)") } !
  • 9. If-Else and Switch // If-Else ! var optionalString: String? = "Hello" optionalString == nil ! var optionalName: String? = nil var greeting = "Hello!" if let name = optionalName { greeting = "Hello, (name)" } else { let name = String("Some Name") } // Switch ! let vegetable = "red pepper" switch vegetable { ! case “celery": let vegetableComment = "Add some raisins and make ants on a log.” ! case "cucumber", "watercress": let vegetableComment = "That would make a good tea sandwich.” ! case let x where x.hasSuffix("pepper"): let vegetableComment = "Is it a spicy (x)?” ! default: let vegetableComment = "Everything tastes good in soup.” }
  • 10. For Loop let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25], ] var largest = 0 var largestKind:String? = nil for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number largestKind = kind } } } largest //25 largestKind //square var firstForLoop = 0 for i in 0..3 { firstForLoop += i } firstForLoop // 3 ! ———————————————————————————————— ! var firstForLoop = 0 for i in 0...3 { secondForLoop += i } secondForLoop // 6
  • 11. Functions func count(string: String) -> (vowels: Int, consonants: Int, others: Int) { var vowels = 0, consonants = 0, others = 0 for character in string { switch String(character).lowercaseString { case "a", "e", "i", "o", "u": ++vowels case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z": ++consonants default: ++others } } return (vowels, consonants, others) } ! let total = count("some arbitrary string!") let finalString = "(total.vowels) vowels and (total.consonants) consonants" // prints "6 vowels and 13 consonants"
  • 12. Functions and Generics func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } ! var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) let newInts = "someInt is now (someInt), and anotherInt is now (anotherInt)" // prints "someInt is now 107, and anotherInt is now 3"
  • 13. Generics ! func swapTwoValues<T>(inout a: T, inout b: T) { let temporaryA = a a = b b = temporaryA } ! var designer = "Lentes" var programmer = "Alice" swapTwoValues(&designer, &programmer) let newTeam = "designer is now (designer), and programmer is now (programmer)" // prints "designer is now Alice, and programmer is now Lentes"
  • 14. Structures vs Classes Consider Structure when: Encapsulate simple data values Values would be copied rather than referenced. Any properties stored by the structure are themselves value types. Ex. Geometric Shapes, Coordinates, Person. Consider Classes when: Inheritance should be used. Need more than one reference to the same instance Check or Interpret the type of a class at runtime Ex. Real life complex objects.
  • 15. Classes class Vehicle { var numberOfWheels: Int var maxPassengers: Int func description() -> String { return "(numberOfWheels) wheels; up to (maxPassengers) passengers" } init() { numberOfWheels = 0 maxPassengers = 1 } } class Bicycle: Vehicle { init() { super.init() numberOfWheels = 2 } } class Tandem: Bicycle { init() { super.init() maxPassengers = 2 } } let tandem = Tandem() println("Tandem: (tandem.description())”) // Tandem: 2 wheels; up to 2 passengers
  • 16. Method Overriding class Car: Vehicle { var speed: Double = 0.0 init() { super.init() maxPassengers = 5 numberOfWheels = 4 } override func description() -> String { return super.description() + "; " + "traveling at (speed) mph" } } let car = Car() println("Car: (car.description())") // Car: 4 wheels; up to 5 passengers; traveling at 0.0 mph
  • 17. Property Overriding class SpeedLimitedCar: Car { override var speed: Double { get { return super.speed } set { super.speed = min(newValue, 40.0) } } } ! let limitedCar = SpeedLimitedCar() limitedCar.speed = 60.0 println("SpeedLimitedCar: (limitedCar.description())") // SpeedLimitedCar: 4 wheels; up to 5 passengers; traveling at 40.0 mph
  • 18. Structs struct Color { let red = 0.0, green = 0.0, blue = 0.0 init(red: Double, green: Double, blue: Double) { self.red = red self.green = green self.blue = blue } } ! ! let magenta = Color(red: 1.0, green: 0.0, blue: 1.0) !
  • 19. Protocols protocol FullyNamed { var fullName: String { get } } ! struct Person: FullyNamed { var fullName: String } ! let john = Person(fullName: "John Appleseed") // john.fullName is "John Appleseed" !
  • 20. more protocols ! ! protocol RandomNumberGenerator { func random() -> Double } ! class Dice { let sides: Int let generator: RandomNumberGenerator init(sides: Int, generator: RandomNumberGenerator) { self.sides = sides self.generator = generator } func roll() -> Int { return Int(generator.random() * Double(sides)) + 1 } } ! protocol TextRepresentable { func asText() -> String } ! extension Dice: TextRepresentable { func asText() -> String { return "A (sides)-sided dice" } }
  • 21. Facts First app built on Swift was the WWDC App. You can use Swift, C, and Objective-C in parallel. The book “The Swift Programming Language” was downloaded 370,000 times on one day.
  • 22. References Swift Tutorial Part 3: Tuples, Protocols, Delegates, and Table Views. http://www.raywenderlich.com/75289/swift- tutorial-part-3-tuples-protocols-delegates-table-views An Introduction To Object-Oriented Programming in Swift. http://blog.codeclimate.com/blog/2014/06/19/oo-swift/ A Few Interesting Things In Swift http:// www.slideshare.net/SmartLogic/a-few-interesting- things-in-swift