[TIL] 21.03.27.(Sat)


アクティビティの内容


各コンピューティングプロジェクトチームメンバーは、実装前に汎用プロトコルとエクスポートを作成します。


10進数計算機とバイナリ計算機の各タイプで共通に採用されるプロトコルとプロトコルの機能を実現するための拡張を作成し,初歩的な実装を行った.
// 더하기 기능
protocol Addable {
    associatedtype T
    associatedtype T: Numeric

    func add(_ operatedNumber: T, and operatingNumber: T)
    var stack: Stack<T> { get set }
    mutating func add(_ operatedNumber: T, and operatingNumber: T)
}

extension Addable {
    func add(_ operatedNumber: T, and operatingNumber: T) {

    mutating func add(_ operatedNumber: T, and operatingNumber: T) {
        let sumResult = stack.sumAllElements()
        stack.reset()
        stack.push(sumResult)
    }
}
Numericプロトコルを用いて,以前JENICタイプを用いて実装したスタック構造にすべての内部要素を追加するためのsumAllElements()法を実装した.where構文を使用して、sumAllElments()メソッドを必要としないタイプ(Stringなど)がNumericプロトコルに従わないように設計されている.

学習内容


デジタルプロトコル


既存のスタック構造を実装する場合、内部で使用されるpropertyまたはpropertyの要素はJENICタイプに従います.十進法計算機およびバイナリ計算機は、いずれもDoubleまたはIntシリーズに従って使用されており、加算時にデジタルスタックに存在するすべての数値を加算するための方法が実施され、結果として以下のエラーが発生した.

エラー推奨はRangeReplaceableCollectionプロトコルを採用し、加算のみに有効であり、その他の減算、乗算、除算演算はFloatingPointプロトコルを採用することを推奨する.

ただし、FloatingPointプロトコルを使用すると、Intタイプの要素を持つスタックインスタンスを生成できません.

その後,整数型と実数型の4則演算をサポートするプロトコルを探したところ,Numericプロトコルが見つかった.

プロトコルの要約は곱셈을 지원하는 값의 타입であり、정수 및 부동소수형 수のようなスカラー値の計算に基礎を提供するプロトコルを説明する.アクティビティで使用した例のように.