[Swift] 1. 変数とデータ型、コレクションタイプ.


varとlet

let name: type = value
var name: type = value
値のタイプが明確であれば、タイプを省略できます!
let name = value
var name = value

let constant : String = "차후에 변경이 불가능한 상수 let"
var variable : String = "차후에 변경이 가능한 변수 var"

variable = "변수는 이렇게 차후에 다른 값 할당 가능"
//constant=「定数以降は値を変更できません」//エラー
let sum: Int
let inputA: Int = 100
let inputB: Int = 200

// 선언 후 첫 할당
sum = inputA + inputB

// sum = 1 // 그 이후에는 다시 값을 바꿀 수 없습니다, 오류발생

// 변수도 물론 차후에 할당하는 것이 가능합니다
var nickName: String

nickName = "yagom"

// 변수는 차후에 다시 다른 값을 할당해도 문제가 없지요
nickName = "야곰"

## 데이터 타입
let implicitInteger = 70
let implicitInteger = 70.0
宣言時にデータ型を指定しない場合、コンパイラはIntとDoubleのタイプとして追跡します.
let explicitDouble: Double = 70
データ型を「ダブル」(Double)に指定して70を割り当てますが、タイプは「ダブル」(Double)です.

Any

var someAny : Any = 100
someAny = "어떤 타입도 수용 가능"
someAny = "90.5"
Anyは任意のタイプとして使用できます.

タイプの変更

let label = "The width is"
let width = 94
let widthLabel = label + String(width)
値を絶対的に異なるタイプに暗黙的に変更することはできません.
Stringタグタイプを使用して置換
最後の行Stringを削除中にエラーが発生しました.

文字列に値を含めます。


let width Label=label+String(width)以外の他の表現.
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."

複数の文字列を表示


複数行を表示するには、(")タグを使用します.
let quotation = """
i said "I have \(apples) apples."
And then i said "I have \(apples + oranges)
	pieces of fruit."""

Collection Type


Array


空のInt Arrayの作成
var integers : Array<Int> = Array<Int>() // []
integers.append(1) 						//[1]
integers.append(100)					//[1,100]

integers.contains(100)					//true
integers.contains(99)					//false

integers.remove(at:0)	//index가 0인 값을 제거하고 return 1
integers.removeLast()					//100
integers.removeAll()	//모든 값들을 제거  []

integers.count							//배열의 길이 return 0

//배열을 포현하는 다른 방법
var doubles:Arrays<Double> = [Double]()

var String : [String] = [String]()
var characters : [Character] = []

//let을 사용하여 불변한 Arrays append,remove 같은 함수 사용 불가.
let immutableArray = [1,2,3]

Dictionary


空のDictionaryを作成します.鍵はStringタイプで、値はAnyです.
var anyDictionary : Dictionary<String,Any> = [String:Any]()
anyDictionary["someKey"] = "value" // return "value"
anyDictionary["anotherKey"] = 100 // return 100

anyDictionary		//	["someKey : "value","anotherKey":100]
anyDictionary["someKey"] = "dictionary" // return "dictionary"
anyDictionary		// ["someKey : "dictionary","anotherKey":100]

anyDictionary.removeValue(forkey:"another") // 해당하는 key set remove.
anyDictionary["someKey"] = nil // somekey에 해당하는 set 제거.

anyDictionary// [:]
let emptyDictionary : [String:String] = [:]
let initalizeDictionary : [String:String] = ["name":"doyun","gender":"male"]

emptyDictionary["key"] = "value" // let이므로 에러 발생.

let someValue : String = initalizeDictionary["name"] // 에러 발생 optional 에서 확인.

Set


空のInt Setの作成

var integerSet : Set[Int] = Set<Int>()
integerSet.insert(1) // return inserted true, memberAfterInsert(1)
integerSet.insert(100)  // return inserted true, memberAfterInsert(1)
integerSet.insert(99)  // return inserted true, memberAfterInsert(1)
integerSet.insert(99)  // return inserted false, memberAfterInsert(1)
integerSet.insert(99)  // return inserted false, memberAfterInsert(1)
setは重複値を持たないため、重複値がinsertによって呼び出されるとfalse値が返される.
integerSet
integerSet.contains(1)		// true 
integerSet.contains(2)		// false
containsメソッドは、コレクションに要素があるかどうかをチェックします.
integerSet.remove(100)				//100
integerSet.removeFirst()			//99

integerSet.count				//1
removeメソッドは削除であり、countはセットのサイズです.
let setA: Set = [1, 2, 3, 4, 5]
let setB: Set = [3, 4, 5, 6, 7]

// 합집합
let union: Set = setA.union(setB)
print(union) // [2, 4, 5, 6, 7, 3, 1]

// 합집합 오름차순 정렬
let sortedUnion: [Int] = union.sorted()
print(sortedUnion) // [1, 2, 3, 4, 5, 6, 7]

// 교집합
let intersection: Set = setA.intersection(setB)
print(intersection) // [5, 3, 4]

// 차집합
let subtracting: Set = setA.subtracting(setB)
print(subtracting) // [2, 1]