print("Day 3 learning swift")
// conversion, need to pay attention of the explicitly size types
/*
let cannotBeNegative: UInt8 = -1
let tooBig: Int8 = Int8.max + 1
print("will throws errors") */
let twoThousand: UInt16 = 2_000
let one: UInt8 = 1
let twoThousand_and_one = twoThousand + UInt16(one)
print(twoThousand_and_one)
print("Penjumlahan beda tipe tidak bisa, maka kita harus mengubah semua \nvariable agar memiliki tipe yang sama")
// konversi integer, floating
let three = 3
let angkakoma = 0.14159
let pi = Double(three) + angkakoma
print(pi)
//konversi floating ke integer
let integerpi = Int(pi)
print(integerpi)
// typealias --> mendefinisikan tipe baru
// typealias newname = type
typealias AudioSample = UInt16
var AmplitudeMin = AudioSample.min
print(AmplitudeMin)
// boolean
let VariableBenar = true
let VariableSalah = false
if VariableSalah {
print("Hm, mungkin bisa saja benar?")
} else {
print("Hm, benar sih nilainya salah!")
}
// tuples bisa memiliki tipe yang berbeda
let ShowError = (404, "Not Found!")
// menguraikan tuples ke dalam variable!
let (angka, pesan) = (ShowError)
print("Angka di dalam tuple adalah: \(angka)")
print("Pesan di dalam tuple adalah: \(pesan)")
// mengabaikan anggota tuple lain:
let (HanyaAngka, _) = ShowError
print("Hanya mendefinisikan angka saja: \(HanyaAngka)")
// menggunakan index dari tuple:
print("Angka, menggunakan index: \(ShowError.0)")
print("Pesan, menggunakan index: \(ShowError.1)")
// memberikan nama pada anggota tuple:
let status = (statusCode: 200, description: "OK")
print("Code, menggunakan nama index: \(status.statusCode)")
print("Pesan, menggunakan nama index: \(status.description)")
// opsional int
var serverRespon: Int? = 404
serverRespon = nil // mengubah nilainy amenjadi nil
// mengubah menjadi nil, tidak bisa jika menggunakan const, atau variable non-opsional
// jika perlu bekerja dengan tidak adanya nilai dalam kondisi tertentu, maka nyatakan sbg opsional dari tipe
// data yang sesuai
var surveyAnswer: String?
// mengetahui apakan variable tidak memiliki nilai (nil):
// == sama dengan, != tidak sama dengan
if serverRespon != 4040 {
print("serverRespon contains nil value.")
}
let convertedNumber: Int? = 123
if convertedNumber != nil {
print("convertedNumber has an integer value of: \(convertedNumber)")
}
/* optional binding
if let constantName = someOptional {
statements
}*/
let convertedNumber: String = "123"
if let actualNumber = Int(convertedNumber) {
print("The string \(convertedNumber)\ has an integer value of: \(actualNumber)")
} else {
print("The string \(convertedNumber)\ could not be converted to an integer")
}