TID #3 (22.01.06)
0106
Schedule
1100気象
1100~1200:シャワーと食事
1200~1230:図書館出勤
1230 ~ 1400 : Spotify Clone Coding Lecture 1
1400 ~ 1550 : Spotify Clone Coding Lecture 2
1550–1610:散歩&間食補充
1610~1830:エレン・スウィフブカンプ講座
1830から1930:家に帰る&食事と休憩
1930-2100:水泳
2100~2130:新聞を読んで休む
2130~2200:休憩
2200-2300:エレン・スウィフト・ブカンプ講座
Total学習時間:7時間
Feedback
遅く起きて残念でしたが、結構時間がかかった1日でした.
特にClone Codingは面白い
まだよくわかりませんが、ある日iOSを選んだと感じました.
早起きして泳いだり、図書館に出勤したりして、最後まで勉強すればいいです.
習慣をつけましょう.
Today I Learned
Spotify Clone Coding Link
Lecture 1
StoryBoardを削除し、AppDelegateとSceneDelegateを変更します.
画面を飾るように行われています. Large Title SFシンボルをアプリケーションに入れる方法 背景色を塗りつぶす方法 田野を経験したことがある.
Lecture 1
1. argument Label
->firstをパラメータLabelと呼びます.
関数呼び出し時に、どのようなパラメータが長く書けるのか、便利です!可変パラメータ 関数のパラメータにデフォルト値 を設定することもできます.
1.関数のパラメータを正しく理解する returnキーワード を正しく理解する Nested Function
1.関数表現
more()=doSomething():同じ動作
->関数記号
1.パラメータがない場合:関数名を呼び出すだけです.
2.パラメータがある場合:パラメータの値部分を消去します.
Ex. addNumber(n num: Int){
return n+1
}
addNumber(n:):関数を指します.
3.パラメータラベル(ワイルドカードモード)を省略した場合:addPrintFunction(:).
chooseStepFunction(後退:value:):chooseStepFunction-back-value関数
と呼ぶ関数の過負荷
オーバーロード:オーバーロード(1つの関数の名前に複数の関数をオーバーロード) 対正 制御トランスポートゲート
1.関数が実行するメモリ構造
システムプログラミングで学んだ内容は、画像でより簡単に学ぶことができます.
Q.グローバル変数はどこに保存しますか?
->データ領域に格納します.(あ、そうだ!)
コード:すべてのコードがメモリに格納され、1つずつ実行されます.
データ:グローバル変数ストレージ/共有領域->スタックからアクセス可能
お尻:
スタックスタック:スタックフレーム/関数の範囲スタックフレームとデータ領域(外部からアクセス不可)スタックフレームとデータ領域
if-else問:踊れ!
戻ります.
Lecture 5
1.INOUTパラメータ
inoutキーワードは、関数で変数を直接変更するのに役立ちます.
Call by Referenceの形で、切り上げが伝わります.原本伝達
Pointerのようなコンセプト(copy-in,copy-out)
func swapNumber(a: inout Int, b: inout Int){
var temp = a
a = b
b = temp
}
swapNumber(a: &num1, b: &num2)
INOUTキーを使用して可変パラメータとして宣言することはできません.
(1)可読性の向上/問い合わせの不便の解消
(2)複数の見張り人を安全に取り外すことができるタイプ-保留中@Attributeキーワード:discadableResult APIは
アプリケーションプログラミングインターフェースの略.
アップルが事前に作成したAPI(内蔵関数)と、サーバと通信するために作成したAPIに分かれています.
これにより、コード量を簡単に減らすことができる.
Schedule
1100気象
1100~1200:シャワーと食事
1200~1230:図書館出勤
1230 ~ 1400 : Spotify Clone Coding Lecture 1
1400 ~ 1550 : Spotify Clone Coding Lecture 2
1550–1610:散歩&間食補充
1610~1830:エレン・スウィフブカンプ講座
1830から1930:家に帰る&食事と休憩
1930-2100:水泳
2100~2130:新聞を読んで休む
2130~2200:休憩
2200-2300:エレン・スウィフト・ブカンプ講座
Total学習時間:7時間
Feedback
遅く起きて残念でしたが、結構時間がかかった1日でした.
特にClone Codingは面白い
まだよくわかりませんが、ある日iOSを選んだと感じました.
早起きして泳いだり、図書館に出勤したりして、最後まで勉強すればいいです.
習慣をつけましょう.
Today I Learned
Spotify Clone Coding Link
Lecture 1
StoryBoardを削除し、AppDelegateとSceneDelegateを変更します.
画面を飾るように行われています.
이번 수업에서는 App/Scene Delegate에서 ViewController 들을 호출해,
ViewController 에서 세부 logic을 채움으로써 프로그램을 짜는데,
> Lecture 2
```swift
이번 수업에서는 Spotify API를 끌어다와서 Authorization 을 진행했다.
우선 Authorization 화면을 AuthViewController를 수정함으로써 만들었고,
Sptify API에 접근하여 URL을 parsing 해서 해당화면과 이어주었다.
API를 활용하는 경험을 해볼 수 있었던 것 같은데,
내 페이지에서는 강사의 화면 페이지를 접근할 수가 없어서 많이 헤메었다.
エレンのSWIFTキャンプLecture 1
1. argument Label
func printName(first name: String){
print("my name is \(name) !")
}
print(first: Han)->firstをパラメータLabelと呼びます.
関数呼び出し時に、どのようなパラメータが長く書けるのか、便利です!
2. 와일드카드 패턴을 사용할 수도 있다.
```swift
func addPrintFunction(_ firstNum: Int, _ secondNum: Int){
print(firstNum + secondNum)
}
addPrintFunction(3,4)
-> 와일드카드 패턴을 사용해서 argument label 을 생략해서 사용할 수도 있다!!
func arithmeticAverage(_ numbers: Double ...) -> Double{
var total = 0.0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
arithmeticAverage(1)
arithmeticAverage(1,3)
arithmeticAverage(1.5,3.5,4.5) ....
-> 함수의 파라미터가 몇 개인지 정해지지 않았을 때, type만 정해놓고서 argument들을 받는다
(Type) ... : 를 가변파라미터라고 한다.
func numFunction(num1: Int, num2: Int =5) -> Int{
var result = num1 + num2
return result
}
numFunction(num1: 3) -> 3+5 가 return 될 것
numFunction(num1: 3, num2: 7) -> 3+7 이 return 될 것
Ex : Print 함수도 기본값이 정해진 것과 똑같다.
print("내용",separator:"",terminator:"\n")
print(items: Any ..., separator: String, terminator: String) 이 원형이다!
-> 별다른 수정값이 들어오지 않으면 argument를 기본값으로 사용
Lecture 21.関数のパラメータを正しく理解する
func someAdd(a: Int) -> Int{
// let a 로 선언되어있음.
따라서 내부에서 var b = a 로 받아주는 방식으로 a값을 변경시킨다.
}
someAdd(a: 5)
2. 함수 내의 변수의 scope(스코프)
```swift
함수 내에서 선언한 변수의 Scope는 함수의 바디로 제한된다는 거. (당연)
함수를 호출하는 것은 자체로 표현식. 함수 내에서 return 나오면 함수 종료 (당연)
func chooseStepFunction(backward: Bool, value: Int) -> Int{
func stepForward(input: Int) -> Int{
return input +1
}
func stepBackward(input: Int) -> Int{
return input -1
}
if backward{
return stepBackward(input: value)
}
else{
return stepForward(input: value
}
}
Swift에서는 함수 내에 함수를 새로 정의해서 호출할 수도 있다.
당연히 함수 내부에서만 살아있는 함수로 취급된다.
Lecture 31.関数表現
doSomething(){
print("SomeThing")
}
var some=doSomething:関数を変数に格納できます.more()=doSomething():同じ動作
->関数記号
1.パラメータがない場合:関数名を呼び出すだけです.
2.パラメータがある場合:パラメータの値部分を消去します.
Ex. addNumber(n num: Int){
return n+1
}
addNumber(n:):関数を指します.
3.パラメータラベル(ワイルドカードモード)を省略した場合:addPrintFunction(:).
chooseStepFunction(後退:value:):chooseStepFunction-back-value関数
と呼ぶ
2. 함수 타입의 표기법
```swift
var function1 = numberPrint(n:)
var function1 : (Int) -> () = numberPrint(n:)
(Int) -> Void
var function2 : (Int, Int) -> (Int) = numberPrint(n:)
オーバーロード:オーバーロード(1つの関数の名前に複数の関数をオーバーロード)
func doSomething(value: Int){
print(value)
}
func doSomething(value: Double){
print(value)
}
func doSomething(value: String){
print(value)
}
func doSomething(value1: String, value2: String){
print(value1,value2)
}
func doSomething(value1: String, value2: Int){
print(value1,value2)
}
-> 함수 이름 하나에 여러 파라미터 형태가 대응되도록 오버로딩을 할 수 있다.
컴파일러는 함수 이름, 파리미터 수/자료형, 아규먼트 레이블, 리턴형 등을 모두 포함해서 구분해준다.
Command + I 를 누르면, 컴파일러가 자동으로 줄을 맞춰준다.
break
continue
fallthrough: switch 문에서 사용할 수 있다. 실행한 뒤 다음 케이스도 실행시켜줌.
throw : 에러와 관련되어 있음
Lecture 41.関数が実行するメモリ構造
システムプログラミングで学んだ内容は、画像でより簡単に学ぶことができます.
Q.グローバル変数はどこに保存しますか?
->データ領域に格納します.(あ、そうだ!)
コード:すべてのコードがメモリに格納され、1つずつ実行されます.
データ:グローバル変数ストレージ/共有領域->スタックからアクセス可能
お尻:
スタックスタック:スタックフレーム/関数の範囲スタックフレームとデータ領域(外部からアクセス不可)スタックフレームとデータ領域
if-else問:踊れ!
戻ります.
Lecture 5
1.INOUTパラメータ
Swift의 함수 내 파라미터는 기본적으로 call by value 형식이고 임시상수라서 변경 불가하다.
Butinoutキーワードは、関数で変数を直接変更するのに役立ちます.
Call by Referenceの形で、切り上げが伝わります.原本伝達
Pointerのようなコンセプト(copy-in,copy-out)
func swapNumber(a: inout Int, b: inout Int){
var temp = a
a = b
b = temp
}
swapNumber(a: &num1, b: &num2)
INOUTキーを使用して可変パラメータとして宣言することはできません.
2. Guard 문
```swift
Swift에서만 유일한 조건문: if문이 여러개 있을 때 코드의 가독성이 문제되는 걸, 극복해줌.
func checkNumbersOf1(password: String) -> Bool{
if password.count >=6{
}
else{
return false
}
print("pass")
}
VS
func checkNumbersOf2(password: String) -> Bool{
guard password.count>=6 else { return false }
print("pass")
}
statement 를 만족하지 않으면 먼저 else 문을 실행시킴.
else 문 안에는 **early exit** 조건이 필요하다! ( return, throw, break, continue )
함수에서 쓰일 경우 return,throw 가,
반복문에서 쓰일 경우 break, continue 가
반드시 들어가야 한다.
가드문에서 선언된 변수를 아래 문장에서 사용가능함. 즉 동일한 스코프로 취급함.
使用理由:(1)可読性の向上/問い合わせの不便の解消
(2)複数の見張り人を安全に取り外すことができるタイプ-保留中
선언에 추가정보 제공: Ex : @available
타입에 추가정보 제공: Ex : @escaping
등 @가 붙는 걸 Attribute 키워드라고 한다.
func sayHello(){
print("안녕하세요")
}
func sayHelloString() -> String{
print("하이")
return "안녕하세요"
}
_ = sayHelloString() : 이렇게 해서 warning을 제거함 (~Swift ver4 패턴)
@discardableResult
func sayHelloString() -> String{
print("하이")
return "안녕하세요"
}
: 이 함수의 결과물은 버릴수도 있는 결과야! 라고 컴파일러에게 알려줌 -> waring 제거
アプリケーションプログラミングインターフェースの略.
アップルが事前に作成したAPI(内蔵関数)と、サーバと通信するために作成したAPIに分かれています.
これにより、コード量を簡単に減らすことができる.
Reference
この問題について(TID #3 (22.01.06)), 我々は、より多くの情報をここで見つけました https://velog.io/@hanheifolio/TID-3-22.01.06テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol