From 1a577e9835a4882dba398da7b4642dfe580b7327 Mon Sep 17 00:00:00 2001 From: Sergei Raskin Date: Thu, 5 Dec 2019 13:18:21 +0300 Subject: [PATCH 1/2] lesson 06 commit from Xcode --- .../UserInterfaceState.xcuserstate | Bin 34550 -> 34827 bytes .../5L_RaskinSergey/main.swift | 2 ++ 2 files changed, 2 insertions(+) diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate index b3eeff6f10fc88358389bee91ed595d9f88a932a..e3b44a10e8ee86dbc9478e08251712113231265c 100644 GIT binary patch delta 14939 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 N-D&*W^n0-M{{hC6jS~O> delta 14879 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 j)rYIk)IF+uTF=(I)wghDmwW$oJ>jJt diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift b/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift index 207c327..993c789 100644 --- a/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift @@ -164,3 +164,5 @@ man.switch_engine(iflag:false) man.fill_tunk(fill_volume: 500) //печатаем что получилось man.printDescription() + + From 3b4cf292b64bd8e8e6d84a90ec5fcbfbe9f00ed8 Mon Sep 17 00:00:00 2001 From: Sergei Raskin Date: Thu, 5 Dec 2019 13:23:22 +0300 Subject: [PATCH 2/2] lesson06 from the command line --- lesson06/.DS_Store | Bin 0 -> 6148 bytes lesson06/6L_RaskinSergey/.DS_Store | Bin 0 -> 6148 bytes .../6LRaskinSergey.playground/Contents.swift | 131 ++++++++ .../Resources/MyView.xib | 29 ++ .../contents.xcplayground | 4 + .../timeline.xctimeline | 16 + .../6L_RaskinSergey.xcodeproj/project.pbxproj | 289 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 18226 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../xcschemes/xcschememanagement.plist | 14 + .../6L_RaskinSergey/main.swift | 124 ++++++++ 13 files changed, 628 insertions(+) create mode 100644 lesson06/.DS_Store create mode 100644 lesson06/6L_RaskinSergey/.DS_Store create mode 100644 lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Contents.swift create mode 100644 lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Resources/MyView.xib create mode 100644 lesson06/6L_RaskinSergey/6LRaskinSergey.playground/contents.xcplayground create mode 100644 lesson06/6L_RaskinSergey/6LRaskinSergey.playground/timeline.xctimeline create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.pbxproj create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 lesson06/6L_RaskinSergey/6L_RaskinSergey/main.swift diff --git a/lesson06/.DS_Store b/lesson06/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9503165a822fe4648f18f1739ac86557743e7dfb GIT binary patch literal 6148 zcmeHK!A{#i5S~2s|sJJx<%}BFvJUg@NeQWJ{06+wj;SN9(031}pnv2aNLj9ymQnQ{l zM4`uspn&g?LJr|lG&`On1GIMy=)z~{!vXxge+i6X1PNU3XX-T0RE&}InS4OqzSV-( zliBgKIJen<;`1ym%1-A-)Yj^+);Ap2b=)`ZxA06&!!jx-MG%dT>FG;Up2gNaR4Ti- zqxdLIrv2vTCzY2`nkQqOoDLHVIr*CALp2T5Bp()foX~XWiTcgfZ033I+tTZL^R}Gr z?snSpo!6buUFYrA&d2@1kISps_59~Ay)Y2?QEO>fT)=NMo*?Za9Os$JM;N&nWs%Lu z3@`)Cz{(l02b1%94qq@!QjINxGr(4>Q~#fPvn3tOQGJv)vsbvOv$Ah*l_Gw_fBs{K%! zbpP-DyZ+Zf+%N;oz{_Mn)O%qsz_r=Cb!nA!*Gkj@Dhb6^2JchQ&{r|W(pB6-)q;LW X2BL4VGKd}&{t?hLaKjAzR|f6?8d+w1 literal 0 HcmV?d00001 diff --git a/lesson06/6L_RaskinSergey/.DS_Store b/lesson06/6L_RaskinSergey/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e07b12db65d6e64ab018e407fdc1e67695c36e11 GIT binary patch literal 6148 zcmeHKyGjH>5Ukb<4h+1|aDKtWcsb6@$o&8nJPuJ-I8iX$$nWygtbQOYdxD9HR6}>o z^mfg#6>M(|m6>e}n z;cv0W4qLpx_50!JdD!JGhmTQK3P=GdAO)m=6!@hA-g{}wlSD-+AO)nrw*vlsXmrP} za7>I(2Sbbi#0Aq~T*oXyY@Q%?g<~Q!G)pQmsa7L~C7tbTA67S8O(+(( z^ZXX&ur5(i3P^#e0>`;sdH=tp|1kegN!m#PDe$ipu*Ig|tocgSTW2rly|&SB>0a|m rcjG!J4AG8>(T=(Cc6=5^S=W5c=Uw5L7mri^f33h5N{1I1 literal 0 HcmV?d00001 diff --git a/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Contents.swift b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Contents.swift new file mode 100644 index 0000000..3f011b7 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Contents.swift @@ -0,0 +1,131 @@ +//: A Cocoa based Playground to present user interface + +import AppKit +import PlaygroundSupport + +// +// main.swift +// 6L_RaskinSergey +// +// Created by raskin-sa on 04/12/2019. +// Copyright © 2019 raskin-sa. All rights reserved. +// + +import Foundation + +//протокол и расширение для красивой печати +protocol consolePrintable:CustomStringConvertible { + func printDescription() + } + +extension consolePrintable{ + func printDescription(){ + print(description) + } +} + +//протокол, содержащий стоимость для классов +protocol pricevalue { + var price: Double {get set} + var inputString: String {get set} +} + +//делаем класс: строка со стоимостью +class ClassArrayString:pricevalue{ + + var price: Double + var inputString: String + + + init(inputString: String, price:Double){ +// self.localstring = inputString + self.inputString = inputString + self.price = price + } +} + +//наследник для работы с массивами Int +class ClassArrayInt:ClassArrayString{ + + init(inputInt:Int, price:Double){ + super .init(inputString: String(inputInt), price: price) + } +} + + + +//Реализовать свой тип коллекции «очередь» (queue) c использованием дженериков. + +struct Queue: consolePrintable { // коллекция типа "очередь": Last In First Out + private var elements = [Element]() + + mutating func push(_ item: Element) { // добавляем элемент в конец массив а + elements.append(item) + } + mutating func pop() -> Element? { // извлекаем первый элемент из массива + return elements.removeFirst() + } + + //Добавить ему несколько методов высшего порядка, полезных для этой коллекции (пример: filter для массивов) + + //функция, заданная через замыкание будет считать суммарную стоимость массива + var totalPrice : Double { + var price = 0.0 + for element in elements { + price += element.price + } + return price + }// var totalPrice definition + + //функция, заданная через замыкание будет выводить все элементы на печать + var description: String { + var lstr = "Элементы: " + for element in elements { + lstr += (" \(element.inputString)") + } + lstr += ". Суммарная стоимость массива: \(totalPrice)" + return lstr + }//var description definition + + // *Добавить свой subscript, который будет возвращать nil в случае обращения к несуществующему индексу. + + subscript(elements: Int) -> Bool? { + + if elements > self.elements.count { + return nil + } + return true + } + +}// struct definition + + +print("Массив строчных значений и его стоимость") +var tempArrayString = Queue() +//var tempArrayInt = Queue() + +tempArrayString.push(ClassArrayString(inputString: "Один", price: 1.0)) +tempArrayString.push(ClassArrayString(inputString: "Семь", price: 12.0 )) +tempArrayString.printDescription() + +print("Массив числовых значений и его стоимость") +var tempArrayInt = Queue() +tempArrayInt.push(ClassArrayInt(inputInt: 1, price: 1.0)) +tempArrayInt.push(ClassArrayInt(inputInt: 7, price: 12.0 )) +tempArrayInt.printDescription() + +print("проверяем сабскрипт c правильным индексом") +var correctindex = tempArrayString[2] +print("\(String(describing: correctindex))") + +print("проверяем сабскрипт c неправильным индексом") +correctindex = tempArrayInt[3] +print("\(String(describing: correctindex))") + +print("проверяем сабскрипт на пустом массиве") +tempArrayString.pop() +tempArrayString.pop() +correctindex = tempArrayString[1] +print("\(String(describing: correctindex))") + + diff --git a/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Resources/MyView.xib b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Resources/MyView.xib new file mode 100644 index 0000000..61f90c0 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/Resources/MyView.xib @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/contents.xcplayground b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/contents.xcplayground new file mode 100644 index 0000000..63b6dd8 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/timeline.xctimeline b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/timeline.xctimeline new file mode 100644 index 0000000..cbeed4a --- /dev/null +++ b/lesson06/6L_RaskinSergey/6LRaskinSergey.playground/timeline.xctimeline @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.pbxproj b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c2a8752 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.pbxproj @@ -0,0 +1,289 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 91A97D8B2397C15B00015775 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91A97D8A2397C15B00015775 /* main.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 91A97D852397C15B00015775 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 91A97D872397C15B00015775 /* 6L_RaskinSergey */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = 6L_RaskinSergey; sourceTree = BUILT_PRODUCTS_DIR; }; + 91A97D8A2397C15B00015775 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 91A97D842397C15B00015775 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 91A97D7E2397C15B00015775 = { + isa = PBXGroup; + children = ( + 91A97D892397C15B00015775 /* 6L_RaskinSergey */, + 91A97D882397C15B00015775 /* Products */, + ); + sourceTree = ""; + }; + 91A97D882397C15B00015775 /* Products */ = { + isa = PBXGroup; + children = ( + 91A97D872397C15B00015775 /* 6L_RaskinSergey */, + ); + name = Products; + sourceTree = ""; + }; + 91A97D892397C15B00015775 /* 6L_RaskinSergey */ = { + isa = PBXGroup; + children = ( + 91A97D8A2397C15B00015775 /* main.swift */, + ); + path = 6L_RaskinSergey; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 91A97D862397C15B00015775 /* 6L_RaskinSergey */ = { + isa = PBXNativeTarget; + buildConfigurationList = 91A97D8E2397C15B00015775 /* Build configuration list for PBXNativeTarget "6L_RaskinSergey" */; + buildPhases = ( + 91A97D832397C15B00015775 /* Sources */, + 91A97D842397C15B00015775 /* Frameworks */, + 91A97D852397C15B00015775 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = 6L_RaskinSergey; + productName = 6L_RaskinSergey; + productReference = 91A97D872397C15B00015775 /* 6L_RaskinSergey */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 91A97D7F2397C15B00015775 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1120; + LastUpgradeCheck = 1120; + ORGANIZATIONNAME = "raskin-sa"; + TargetAttributes = { + 91A97D862397C15B00015775 = { + CreatedOnToolsVersion = 11.2.1; + }; + }; + }; + buildConfigurationList = 91A97D822397C15B00015775 /* Build configuration list for PBXProject "6L_RaskinSergey" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 91A97D7E2397C15B00015775; + productRefGroup = 91A97D882397C15B00015775 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 91A97D862397C15B00015775 /* 6L_RaskinSergey */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 91A97D832397C15B00015775 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 91A97D8B2397C15B00015775 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 91A97D8C2397C15B00015775 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 91A97D8D2397C15B00015775 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 91A97D8F2397C15B00015775 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5C3KKHP5ML; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 91A97D902397C15B00015775 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5C3KKHP5ML; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 91A97D822397C15B00015775 /* Build configuration list for PBXProject "6L_RaskinSergey" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 91A97D8C2397C15B00015775 /* Debug */, + 91A97D8D2397C15B00015775 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 91A97D8E2397C15B00015775 /* Build configuration list for PBXNativeTarget "6L_RaskinSergey" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 91A97D8F2397C15B00015775 /* Debug */, + 91A97D902397C15B00015775 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 91A97D7F2397C15B00015775 /* Project object */; +} diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..53aa30c --- /dev/null +++ b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..75f61251e5b8bb5ae9e06c34fa46b579472004b5 GIT binary patch literal 18226 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 + + diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..6c0878e --- /dev/null +++ b/lesson06/6L_RaskinSergey/6L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + 6L_RaskinSergey.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/lesson06/6L_RaskinSergey/6L_RaskinSergey/main.swift b/lesson06/6L_RaskinSergey/6L_RaskinSergey/main.swift new file mode 100644 index 0000000..492c979 --- /dev/null +++ b/lesson06/6L_RaskinSergey/6L_RaskinSergey/main.swift @@ -0,0 +1,124 @@ +// +// main.swift +// 6L_RaskinSergey +// +// Created by raskin-sa on 04/12/2019. +// Copyright © 2019 raskin-sa. All rights reserved. +// + +import Foundation + +//протокол и расширение для красивой печати +protocol consolePrintable:CustomStringConvertible { + func printDescription() + } + +extension consolePrintable{ + func printDescription(){ + print(description) + } +} + +//протокол, содержащий стоимость для классов +protocol pricevalue { + var price: Double {get set} + var inputString: String {get set} +} + +//делаем класс: строка со стоимостью +class ClassArrayString:pricevalue{ + + var price: Double + var inputString: String + + + init(inputString: String, price:Double){ +// self.localstring = inputString + self.inputString = inputString + self.price = price + } +} + +//наследник для работы с массивами Int +class ClassArrayInt:ClassArrayString{ + + init(inputInt:Int, price:Double){ + super .init(inputString: String(inputInt), price: price) + } +} + + + +//Реализовать свой тип коллекции «очередь» (queue) c использованием дженериков. + +struct Queue: consolePrintable { // коллекция типа "очередь": Last In First Out + private var elements = [Element]() + + mutating func push(_ item: Element) { // добавляем элемент в конец массив а + elements.append(item) + } + mutating func pop() -> Element? { // извлекаем первый элемент из массива + return elements.removeFirst() + } + + //Добавить ему несколько методов высшего порядка, полезных для этой коллекции (пример: filter для массивов) + + //функция, заданная через замыкание будет считать суммарную стоимость массива + var totalPrice : Double { + var price = 0.0 + for element in elements { + price += element.price + } + return price + }// var totalPrice definition + + //функция, заданная через замыкание будет выводить все элементы на печать + var description: String { + var lstr = "Элементы: " + for element in elements { + lstr += (" \(element.inputString)") + } + lstr += ". Суммарная стоимость массива: \(totalPrice)" + return lstr + }//var description definition + + // *Добавить свой subscript, который будет возвращать nil в случае обращения к несуществующему индексу. + + subscript(elements: Int) -> Bool? { + + if elements > self.elements.count { + return nil + } + return true + } + +}// struct definition + + +print("Массив строчных значений и его стоимость") +var tempArrayString = Queue() +//var tempArrayInt = Queue() + +tempArrayString.push(ClassArrayString(inputString: "Один", price: 1.0)) +tempArrayString.push(ClassArrayString(inputString: "Семь", price: 12.0 )) +tempArrayString.printDescription() + +print("Массив числовых значений и его стоимость") +var tempArrayInt = Queue() +tempArrayInt.push(ClassArrayInt(inputInt: 1, price: 1.0)) +tempArrayInt.push(ClassArrayInt(inputInt: 7, price: 12.0 )) +tempArrayInt.printDescription() + +print("проверяем сабскрипт c правильным индексом") +var correctindex = tempArrayString[2] +print("\(String(describing: correctindex))") + +print("проверяем сабскрипт c неправильным индексом") +correctindex = tempArrayInt[3] +print("\(String(describing: correctindex))") + +print("проверяем сабскрипт на пустом массиве") +tempArrayString.pop() +tempArrayString.pop() +correctindex = tempArrayString[1] +print("\(String(describing: correctindex))")