let num = 1
console.log(num) // 1
num = 2
console.log(num) // 2
var num = 1
print(num) // 1
num = 2
print(num) // 2
const num = 1
console.log(num) // 1
let num = 1
print(num) // 1
const name = "Ali"
const signature = `
Signed by ${name}
`
console.log(name.length) // 3
console.log(name.toUpperCase()) // "ALI"
console.log(name.startsWith("Al")) // true
console.log(name.endsWith("li")) // true
console.log("x + " + 1) // "x + 1"
console.log(`2 + 2 = ${2 + 2}`) // "2 + 2 = 4"
let name = "Ali"
let signature = """
Signed by \(name)
"""
print(name.count) // 3
print(name.uppercased()) // "ALI"
print(name.hasPrefix("Al")) // true
print(name.hasSuffix("li")) // true
print("x + " + String(1)) // x + 1
print("2 + 2 = \(2 + 2)") // 2 + 2 = 4
let num = 1_000
num += 1
console.log(num) // 1001
Number.prototype.isMultiple = function({ of = 1 }) {
return this % of === 0
}
console.log(num.isMultiple({ of: 2 })) // false
console.log(4..isMultiple({ of: 2 })) // true
var num = 1_000
num += 1
print(num) // 1001
print(num.isMultiple(of: 2)) // false
print(4.isMultiple(of: 2)) // true
const num = 0.1 + 0.2
console.log(num) // 0.30000000000000004
let x = 1.5
const y = 2
console.log(x + y) // 3.5
console.log(Math.floor(x) + y) // 3
x *= 2
console.log(x) // 3
let num = 0.1 + 0.2
print(num) // 0.30000000000000004
var x = 1.5
let y = 2
print(x + Double(y)) // 3.5
print(Int(x) + y) // 3
x *= 2
print(x) // 3.0
let isAdmin = false
isAdmin = !isAdmin
console.log(isAdmin) // true
var isAdmin = false
isAdmin = !isAdmin
print(isAdmin) // true
isAdmin.toggle()
print(isAdmin) // false
const numbers = [1, 2, 3]
numbers.push(4)
const names = new Array()
names.push("Ali")
console.log(names[0]) // "Ali"
const grades = []
grades.push(73)
let alphabet = ["a", "b", "c", "d"]
console.log(alphabet.length) // 4
console.log(alphabet.splice(2, 1)) // ["c"]
alphabet.length = 0
alphabet = ["c", "a", "d", "b"]
console.log(alphabet.includes("e")) // false
console.log([...alphabet].sort()) // ["a", "b", "c", "d"]
console.log([...alphabet].reverse()) // ["b", "d", "a", "c"]
var numbers = [1, 2, 3]
numbers.append(4)
var names = Array<String>()
names.append("Ali")
print(names[0]) // "Ali"
var grades = [Int]()
grades.append(73)
var alphabet: [String] = ["a", "b", "c", "d"]
print(alphabet.count) // 4
print(alphabet.remove(at: 2)) // "c"
alphabet.removeAll()
alphabet = ["c", "a", "d", "b"]
print(alphabet.contains("e")) // false
print(alphabet.sorted()) // ["a", "b", "c", "d"]
print(alphabet.reversed()) // ReversedCollection<Array<String>>(_base: ["c", "a", "d", "b"])
const ali = {
name: "Ali",
surname: "Veli",
age: "20",
}
console.log(ali.name) // "Ali"
console.log(ali.surname) // "Veli"
console.log(ali.age) // "20"
const olympics = new Map()
olympics.set(2012, "London")
olympics.set(2016, "Rio")
olympics.set(2016, "Rio de Janeiro")
olympics.set(2021, "Tokyo")
console.log(olympics.get(2012)) // "London"
console.log(olympics.size) // 3
let ali = [
"name": "Ali",
"surname": "Veli",
"age": "20",
]
print(ali["name", default: "Unknown"]) // Optional("Ali")
print(ali["surname", default: "Unknown"]) // Optional("Veli")
print(ali["age", default: "Unknown"]) // Optional("20")
var olympics = [Int: String]()
olympics[2012] = "London"
olympics[2016] = "Rio"
olympics[2016] = "Rio de Janeiro"
olympics[2021] = "Tokyo"
print(olympics[2012, default: "World"]) // Optional("London")
print(olympics.count) // 3
const names = new Set(["Ali", "Veli", "Ahmet"])
console.log(names) // Set { "Ali", "Veli", "Ahmet" }
const cities = new Set()
cities.add("Ä°stanbul")
cities.add("Ä°stanbul")
console.log(cities.has("Ä°stanbul")) // true
console.log(cities.size) // 1
cities.add("Ankara")
console.log(Array.from(cities).sort()) // ["Ankara", "Ä°stanbul"]
let names = Set(["Ali", "Veli", "Ahmet"])
print(names) // ["Ali", "Veli", "Ahmet"]
var cities = Set<String>()
cities.insert("Ä°stanbul")
cities.insert("Ä°stanbul")
print(cities.contains("Ä°stanbul")) // true
print(cities.count) // 1
cities.insert("Ankara")
print(cities.sorted()) // ["Ankara", "Ä°stanbul"]
const Weekday = Object.freeze({
monday: Symbol("monday"),
tuesday: Symbol("tuesday"),
wednesday: Symbol("wednesday"),
thursday: Symbol("thursday"),
friday: Symbol("friday"),
})
enum Weekday {
case monday
case tuesday
case wednesday
case thursday
case friday
}
var day = Weekday.monday
day = Weekday.tuesday
day = .wednesday
enum Weekend {
case saturday, sunday
}
const name: string = "Ali"
const score: number = 0
const pi: number = 3.141
const isAdmin: boolean = true
const albums: string[] = ["Century Child", "Human. :II: Nature."]
const olympics: Map<number, string> = new Map([
[2012, "London"],
[2016, "Rio"],
[2021, "Tokyo"],
])
const books: Set<string> = new Set(["The Name of the Wind", "The Wise Man's Fear"])
let name: String = "Ali"
let score: Double = 0
let pi: Double = 3.141
let isAdmin: Bool = true
let albums: [String] = ["Century Child", "Human. :II: Nature."]
let olympics: [Int: String] = [2012: "London", 2016: "Rio", 2021: "Tokyo"]
let books: Set<String> = Set(["The Name of the Wind", "The Wise Man's Fear"])
const age = 18
const isAdmin = true
if (age >= 18 && isAdmin) {
console.log("You're authenticated")
} else if (age < 18) {
console.log("You're not an adult")
} else if (!isAdmin) {
console.log("Contact with an admin")
} else {
console.log("You're unauthenticated")
}
let age = 18
let isAdmin = true
if age >= 18 && isAdmin {
print("You're authenticated")
} else if age < 18 {
print("You're not an adult")
} else if !isAdmin {
print("Contact with an admin")
} else {
print("You're unauthenticated")
}
const num = 2
switch (num) {
case 1:
console.log("one")
break
case 2:
console.log("two") // "two"
case 3:
console.log("three") // "three"
default:
console.log("4,5,6,...") // "4,5,6,..."
}
let num = 2
switch num {
case 1:
print("one")
case 2:
print("two") // "two"
fallthrough
case 3:
print("three") // "three"
fallthrough
default:
print("4,5,6,...") // "4,5,6,..."
}
const age = 18
const canVote = age >= 18 ? "Y" : "N"
console.log(canVote) // "Y"
let age = 18
let canVote = age >= 18 ? "Y" : "N"
print(canVote) // "Y"
const alphabet = ["a", "b", "c"]
for (const char of alphabet) {
console.log(char) // "a", "b", "c"
}
const range = (from, to, { inclusive = true } = {}) =>
Array(to - from + Number(inclusive)).fill(null).map((_, i) => i + from)
// range(3, 5) = 3...5
for (const num of range(3, 5)) {
if (num === 5) break
if (num % 2 === 1) continue
console.log(num) // 2, 4
}
// range(3, 5, { inclusive: false }) = 3..<5
for (const num of range(3, 5, { inclusive: false })) {
console.log(num) // 3, 4
}
let alphabet = ["a", "b", "c"]
for char in alphabet {
print(char) // "a", "b", "c"
}
for num in 1...10 {
if num == 5 {
break
}
if num % 2 == 1 {
continue
}
print(num) // 2, 4
}
for num in 3..<5 {
print(num) // 3, 4
}
let num = 0
while (num !== 4) {
num = Math.ceil(Math.random() * 10)
console.log(num) // 1 to 10
}
var num = 0
while num != 4 {
num = Int.random(in: 1...10)
print(num) // 1 to 10
}
const isEven = ({ num }) => {
const res = num % 2 === 0
return res
}
console.log(isEven({ num: 3 })) // false
func isEven(num: Int) -> Bool {
let res = num % 2 == 0
return res
}
print(isEven(num: 3)) // false
const getUserArray = () => ["Floor", "Jansen"]
const userArray = getUserArray()
console.log(`${userArray[0]} ${userArray[1]}`) // "Floor Jansen"
const getUserDict = () => ({ name: "Floor", surname: "Jansen" })
const userDict = getUserDict()
console.log(`${userDict.name} ${userDict.surname}`) // "Floor Jansen"
const getUserTuple = () => ["Floor", "Jansen"]
const userTuple = getUserTuple()
console.log(`${userArray[0]} ${userArray[1]}`) // "Floor Jansen"
const getUserNamedTuple = () => ({ name: "Floor", surname: "Jansen" })
const { name, surname } = getUserNamedTuple()
console.log(`${name} ${surname}`) // "Floor Jansen"
func getUserArray() -> [String] {
["Floor", "Jansen"]
}
let userArray = getUserArray()
print("\(userArray[0]) \(userArray[1])") // "Floor Jansen"
func getUserDict() -> [String: String] {
["name": "Floor", "surname": "Jansen"]
}
let userDict = getUserDict()
print("\(userDict["name", default: "Ali"]) \(userDict["surname", default: "Veli"])") // "Floor Jansen
func getUserTuple() -> (String, String) {
("Floor", "Jansen")
}
let userTuple = getUserTuple()
print("\(userTuple.0) \(userTuple.1)") // "Floor Jansen"
func getUserNamedTuple() -> (name: String, surname: String) {
// ("Floor", "Jansen") // This is valid also
(name: "Floor", surname: "Jansen")
}
let (name, _) = getUserNamedTuple()
let (_, surname) = getUserNamedTuple()
print("\(name) \(surname)") // "Floor Jansen"
const isOdd = (num) => {
return num % 2 === 1
}
console.log(isOdd(3)) // true
const printTimesTable = ({ for: num }) => {
for (let i = 1; i <= 3; i++) {
console.log(`${i} x ${num} = ${i * num}`)
}
}
printTimesTable({ for: 5 }) // "1 x 5 = 5", "2 x 5 = 10", "3 x 5 = 15"
func isOdd(_ num: Int) -> Bool {
num % 2 == 1
}
print(isOdd(3)) // true
func printTimesTable(for num: Int) {
for i in 1...3 {
print("\(i) x \(num) = \(i * num)")
}
}
printTimesTable(for: 5) // "1 x 5 = 5", "2 x 5 = 10", "3 x 5 = 15"
const printNumbers = ({ from, to = 10 }) => {
for (let i = from; i <= to; i++) console.log(i)
}
printNumbers({ from: 8 }) // 8, 9, 10
func printNumbers(from: Int, to: Int = 10) {
for i in from...to {
print(i)
}
}
printNumbers(from: 8) // 8, 9, 10
const PasswordError = Object.freeze({
short: Symbol("short"),
obvious: Symbol("obvious"),
})
const checkPassword = (password) => {
const length = password.length
if (length < 5) throw PasswordError.short
if (password === "12345") throw PasswordError.obvious
if (length < 8) return "Ok"
if (length < 10) return "Good"
return "Excellent"
}
try {
const res = checkPassword("12345")
console.log(res)
} catch (err) {
if (err === PasswordError.short) {
console.log("Short password")
} else if (err === PasswordError.obvious) {
console.log("Try a stronger password.") // "Try a stronger password."
} else {
console.log("An error occured.")
}
}
enum PasswordError: Error {
case short, obvious
}
func checkPassword(_ password: String) throws -> String {
let count = password.count
if count < 5 {
throw PasswordError.short
}
if password == "12345" {
throw PasswordError.obvious
}
if count < 8 {
return "Ok"
}
if count < 10 {
return "Good"
}
return "Excellent"
}
do {
let res = try checkPassword("12345")
print(res)
} catch PasswordError.short {
print("Short password")
} catch PasswordError.obvious {
print("Try a stronger password.") // "Try a stronger password."
} catch {
print("An error occured")
}
const sayHi = () => console.log("Hi!")
sayHi() // "Hi"
const greet = (name) => `Hi, ${name}!`
console.log(greet("Ali")) // "Hi, Ali!"
const sorted = [3, 1, 2].sort((a, b) => a - b)
console.log(sorted) // [1, 2, 3]
let sayHi = {
print("Hi!")
}
sayHi() // "Hi!"
let greet = { (name: String) -> String in
"Hi, \(name)"
}
print(greet("Ali")) // "Hi, Ali!"
let sorted = [3, 1, 2].sorted(by: { (a: Int, b: Int) -> Bool in
a < b
})
print(sorted) // [1, 2, 3]
const sorted = [3, 1, 2].sort((a, b) => a - b)
console.log(sorted) // [1, 2, 3]
const reversed = [3, 1, 2].sort((a, b) => b - a)
console.log(reversed) // [3, 2, 1]
let sorted = [3, 1, 2].sorted { a, b in
a < b
}
print(sorted) // [1, 2, 3]
let reversed = [3, 1, 2].sorted { $0 > $1 }
print(reversed) // [3, 2, 1]
const makeArray = ({ size, using: generator }) => {
const numbers = []
for (let i = 0; i < size; i++) {
numbers.push(generator())
}
return numbers;
}
func makeArray(size: Int, using generator: () -> Int) -> [Int] {
var numbers = [Int]()
for _ in 0..<size {
numbers.append(generator())
}
return numbers
}
const arr = makeArray({ size: 3, using: () => Math.floor(Math.random() * 10) })
console.log(arr) // [4, 2, 8]
let arr = makeArray(size: 3) { Int.random(in: 1..<10) }
print(arr) // [8, 6, 2]
const generateNumber = () => Math.floor(Math.random() * 10)
const arr = makeArray({ size: 3, using: generateNumber })
console.log(arr) // [5, 0, 4]
func generateNumber() -> Int { Int.random(in: 0..<10 )}
let arr = makeArray(size: 3, using: generateNumber)
print(arr) // [7, 9, 3]
const printThreeSteps = ({ first, second, third }) => {
console.log("1st:")
first()
console.log("2nd:")
second()
console.log("3rd:")
third()
console.log("Completed")
}
printThreeSteps({
first: () => console.log("a"),
second: () => console.log("b"),
third: () => console.log("c"),
}) // "1st:", "a", "2nd:", "b", "3rd:", "c", "Completed"
func printThreeSteps(first: () -> Void, second: () -> Void, third: () -> Void) {
print("1st:")
first()
print("2nd:")
second()
print("3rd:")
third()
print("Completed")
}
printThreeSteps {
print("a")
} second: {
print("b")
} third: {
print("c")
} // "1st:", "a", "2nd:", "b", "3rd:", "c", "Completed"
const arr = [4, 3, 2, 5, 1]
.filter(x => x % 2 === 0)
.map(x => x * x)
.sort((x, y) => x - y)
console.log(arr) // [4, 16]
let arr = [4, 3, 2, 5, 1].filter {
$0 % 2 == 0
}.map {
$0 * $0
}.sorted {
$0 < $1
}
print(arr) // [4, 16]