今日の学習
はてな教科書よりわかり易い。踏み込んでいないからか。
元来、言語の全仕様を駆使してプログラムするべきじゃないと思うの。
基本のデータの扱い方を学んでどの言語でも使えるようにやるのがベストプラクティスだとぼくは思うの
import UIKit var str = "Hello, playground" let color = ["red","blue","yellow"] print(str) for (index,value) in color.enumerate() { print("\(index),\(value)") } let msg:String? = "hoge" print(msg!); if let m = msg { print(m) } func hello(){ print("helloworld") } hello() func makeGene<T>(items:T...) -> [T] { var array = [T]() for item in items { //array += [item] array.append(item) } return array } let collors = makeGene("res","aefe","sde") let cs = ["RED","BUl"] let cs2 = cs.map(){str in str.lowercaseString} let cs3 = cs.map {str in str.lowercaseString} print(cs2) print(cs3) // クロージャ func battery(capacity:Int) -> (Int) -> Int { var stock = capacity func use( volume : Int) -> Int { if(stock > volume) { stock -= volume }else { stock = 0 } print(stock) return stock; } return use } let battery100 = battery(1000) battery100(100) battery100(100) //アクセス権どうなっとるの? class MyClass { let msg = "ハロー" private var msg2 = "ハロー" // computed プロパティ var doubleMsg : String { get { return msg2 + ":" + msg2; } set (msg) { msg2 = msg } } func hello(){ print(msg) } private func hello2(){ print(msg2) } // クラスメソット class func hello(){ print("aaaa") } } let m = MyClass() m.hello() m.msg m.msg2 m.hello2() MyClass.hello() print(m.doubleMsg) // struct with subscript struct Stock { var name : String var data : [String:Int] = [:] init(name:String){ self.name = name } subscript(color:String,size:Double) -> Int { get { let key = color + size.description if let value = data[key] { return value }else{ return 0 } } set { let key = color + size.description data[key] = newValue } } } var addixStock = Stock(name:"Shoes") addixStock["red",26.0] = 30 addixStock["blue",23.5] = 40 addixStock["red",26.0] += 30 print(addixStock["red",26.0])