Mar 08, 2021, TIL (Today I Learned)
18369 ワード
学習内容
デザインモードとは?
設計時によく使われるテンプレート.先輩たちのタックル記録
コード外観
Design Patterns(1994) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
デザインパターンの意味
단, 적절히 잘 사용하자
設計パターンを手段として、目的地があれば主客転倒する場合があります.*指定されたパターンについては、状況に応じて変更する必要がありますが、パターンの設計にこだわると、パターンを柔軟に適用したり変更したりすることはできません.そのため、100%守る必要はありませんが、明確に知れば、やるべきことはたくさんあります.
Design Patterns vs Architectures
アーキテクチャ:大図、ソフトウェア全図
ex)洋風建築、MVC建築
Design Pattern:このアーキテクチャの詳細なソリューション
ex)現在の状況に適応するために、西洋の建物内の不便な設計部分を修正する.
UML (Unified Modeling Language)
SWIFTはどの要素を使用してアーキテクチャと設計モードを作成しましたか?
MVC (Model-View-Controller) Architecture
どんな基準で区分されていますか.
区分基準の要素は何ですか.
表示される要素はすべてオブジェクトです.
モデル、ビュー、およびコントローラ
モデル定義処理データ
ユーザーが見ているのはviewというエリアに属するinstanceです
*viewとviewcontrollerは違います!
計算または計算のプロパティは何ですか?
「プロファイルの格納に加えて、クラス、構造および列挙*は、計算されたプロファイルを宣言することもできます.計算されたプロファイルは、実際の値を格納するのではなく、
getter
およびoptional
およびsetter
のメソッドを提供し、値を参照して他のプロファイルの値を間接的に設定します.」ソース:プロフェッショナル(Properties)-『Swift言語ガイド』(Gitbook.io)
インバースハイヒール
いったいどうして演算プログラムを書く方法がないのですか。
メソッドでインスタンス値にアクセスするには、2つのメソッドが必要です.インスタンスにアクセスする方法とインスタンスを設定する方法の2つの方法が実装されるべきであるが、この方法の分散実装により、コードの可読性が低下する可能性があるため、この場合、演算プログラムの作成がより簡便で直感的になる.
構造例は、本や複数のブログによく登場するため、クラス内の値を特定の状態で異なる値を計算するアクセス者(getter)と設定者(setter)の方法を使用してコードを記述しようとします.
私は仮想的な財布の状況でコードを書いた.
やっぱり親にはいいですね.
import Foundation
class MyWallet {
var money: Int
var card: String
init(won: Int, checkCard: String) {
self.money = won
self.card = checkCard
}
func supportFromParents() -> MyWallet {
return MyWallet(won: 200000, checkCard: "신한카드")
}
func putMoneyInMyWallet(_ support: MyWallet) {
money += support.money
card = support.card
}
}
var myProperty: MyWallet = MyWallet(won: 200, checkCard: "신용 카드가 없습니다.")
print("지금 저는 \(myProperty.card) 그리고 제 지갑에는 \(myProperty.money)원 밖에 없습니다. ")
print("제가 불쌍한지 부모님이 \(myProperty.supportFromParents().card) 그리고 \(myProperty.supportFromParents().money)원을 지원 해 주셨습니다.")
myProperty.putMoneyInMyWallet(myProperty.supportFromParents())
print("그래서 제 총 자산은 \(myProperty.money)원이 되었고 이제 \(myProperty.card)도 있습니다.")
// 지금 저는 신용 카드가 없습니다. 그리고 제 지갑에는 200원 밖에 없습니다.
// 제가 불쌍한지 부모님이 신한카드 그리고 200000원을 지원 해 주셨습니다.
// 그래서 제 총 자산은 200200원이 되었고 이제 신한카드도 있습니다.
この方法を演算プログラムと比較する.class MyWallet {
var money: Int
var card: String
init(won: Int, checkCard: String) {
self.money = won
self.card = checkCard
}
var supportFromParents: MyWallet { //연산 프로퍼티
// 접근자
get {
return MyWallet(won: 200000, checkCard: "신한카드")
}
// 설정자
set (support) {
money += support.money
card = support.card
}
// 매개 변수 이름을 생략한 설정자는 아래와 같이 설정할 수 있다.
set {
money += newValue.money
card = newValue.card
}
}
}
// My Tung Tung empty Wallet
var myProperty: MyWallet = MyWallet(won: 200, checkCard: "신용 카드가 없습니다.")
// GET financial supoprt from parents, thank God
print("지금 저는 \(myProperty.card) 그리고 제 지갑에는 \(myProperty.money)원 밖에 없습니다. ")
print("제가 불쌍한지 부모님이 \(myProperty.supportFromParents.card) 그리고 \(myProperty.supportFromParents.money)원을 지원 해 주셨습니다.")
// SET changes in my Pocket
myProperty = myProperty.supportFromParents
print("그래서 제 총 자산은 \(myProperty.money)원이 되었고 이제 \(myProperty.card)도 있습니다.")
// 그래서 제 총 자산은 200000원이 되었고 이제 신한카드도 있습니다.
get
分だと、変わった感じになります.set
の部分は変化が適用される値であることを感じた.メソッドを使用する場合、アクセス者と設定者を呼び出す場合は、別の2つのメソッドが必要ですが、演算プログラムを使用する場合は、1つの変数でアクセスするのがずっと簡単だと感じます.
さらに、演算プログラムの読み取り専用を実現するには、
get
メソッドを使用するだけです.class iOSCamperInformation {
var gitHubIdAndAge: [String: Int]
init(gitHubIdAndAge: [String: Int]) {
self.gitHubIdAndAge = gitHubIdAndAge
}
// 아래와 같이 하면 return 값이 iOSCamperInformation type이다
var james: iOSCamperInformation { //연산 프로퍼티
// 접근자
get {
return iOSCamperInformation(gitHubIdAndAge: ["James": 27])
}
var yagom: iOSCamperInformation {
get {
return iOSCamperInformation(gitHubIdAndAge: ["yagom": 22])
}
}
}
}
// create camperMembers instance
var camperMembers: IOSCamper = IOSCamper(gitHubIdAndAge: ["camper": 13])
// GET james
camperMembers = camperMembers.james
print(camperMembers.gitHubIdAndAge) // ["James", 27]
// SET이 설정되어 있지 않기 때문에 error!!
camperMembers = camperMembers.gitHubIdAndAge
TIL例文を書く前に、なぜ演算プログラムをメソッドで書かなければならないのかという疑問があったが、使ってみると本当に簡単だった.これからはよく使います.参考文献:
SWIFTプログラミング第3版-野熊
私の仮想財布の状況
問題/厄介な問題
野熊の本の例文とネット上の例文コードを見て、正直頭の中で勉強できないとは感じませんでした.だから今日は何回か演算プログラムを見ましたが、やはり混同しています.
解決策
その場合、私の想像力を使って自分のコードの例を作り、それに応じた文法を駆使して、私の頭ももっとはっきりして、ある程度私のものを吸収したような気がします.単纯にコピーして贴るよりも、他人の例をTILに书く方が、これからも自分なりのコード例をよく作って、本やネットで学んだ内容を自分から勉强したいと思います.
Reference
この問題について(Mar 08, 2021, TIL (Today I Learned)), 我々は、より多くの情報をここで見つけました
https://velog.io/@inwoodev/Mar-08-2021-TIL-Today-I-Learned
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
その場合、私の想像力を使って自分のコードの例を作り、それに応じた文法を駆使して、私の頭ももっとはっきりして、ある程度私のものを吸収したような気がします.単纯にコピーして贴るよりも、他人の例をTILに书く方が、これからも自分なりのコード例をよく作って、本やネットで学んだ内容を自分から勉强したいと思います.
Reference
この問題について(Mar 08, 2021, TIL (Today I Learned)), 我々は、より多くの情報をここで見つけました https://velog.io/@inwoodev/Mar-08-2021-TIL-Today-I-Learnedテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol