b l e = { ( x : I n t ) - > I n t i n x * 2 } d o u b l e ( 2 ) / / 即時関数でU I の定義したり、 コー ルバック書いたり l e t l a b e l : U I L a b e l = { l e t l b = U I L a b e l ( f r a m e : C G R e c t ( x : 0 , y : 0 , w i d t h : 2 0 0 , h e i g l b . b a c k g r o u n d C o l o r = U I C o l o r . r e d l b . t e x t = " h o g e " r e t u r n l b } ( )
n y = 1 s w i t c h a n y { c a s e l e t s t r a s S t r i n g : p r i n t ( " m a t c h : \ ( s t r ) " ) c a s e l e t i n t a s I n t : p r i n t ( i n t ) d e f a u l t : p r i n t ( " d e f a u l t " ) } 他にも色々 ある 詳しくはSwift 2 のパター ンマッチ構文集( ほぼ翻訳) 参照
n t ? = n i l / / ? はo p t i o n a l 型のシンタックスシュガー Optional 型だけnil を受け取れる l e t u r l : U R L ? = U R L ( s t r i n g : " h t t p s : / / h i r o s h i . c o m " ) / / ① l e t s a f a f i V C = S F S a f a r i V i e w C o n t r o l l e r ( u r l : u r l ) / / ② ➀:url が空文字などで開けないかもしれない。 から標準ライブラリの URL はoptional 型で初期化される ➁: アプリ内でsafari を開けるViewController にURL を渡そうとするが、 Optional 型のままだとエラー がでてビルドできない
d 文。n i l だったら早期退出させる g u a r d l e t u r l : U R L ? = U R L ( s t r i n g : " h t t p s : / / h i r o s h i . c o m " ) e l s e r e t u r n } l e t s a f a f i V C = S F S a f a r i V i e w C o n t r o l l e r ( u r l : u r l ) / / S u c c e s s ! / / 他にもこんな書き方とかある( ? ? 演算子) l e t n a m e : S t r i n g ? = n i l / / n a m e がn i l だったらh i r o s h i は" s a d a o ! " l e t h i r o s h i = n a m e ? ? " s a d a o ! "
s U s e r { l e t i d : I n t v a r n a m e : S t r i n g i n i t ( i d : I n t , n a m e : S t r i n g ) { s e l f . i d = i d s e l f . n a m e = n a m e } } l e t h i r o s h i = U s e r ( i d : 1 0 0 1 , n a m e : " h i r o s h i " ) l e t s a d a o = h i r o s h i s a d a o . n a m e = " s a d a o !" d u m p ( h i r o s h i ) / / i d : 1 0 0 0 , n a m e : s a d a o !
s t r u c t U s e r { l e t i d : I n t v a r n a m e : S t r i n g } l e t a = U s e r ( i d : 1 0 0 1 , n a m e : " h i r o s h i " ) l e t b = a b . n a m e = " s a d a o " d u m p ( a ) / / i d : 1 0 0 0 , n a m e : h i r o s h i
何のprotocol に準拠しているのか 明確 p r o t o c o l s h o w A l e r t T y p e { v a r m e s s a g e : S t r i n g { g e t } f u n c s h o w A l e r t ( m e s s a g e : S t r i n g ) } / / 複数のp r o t o c o l を組み合わせて機能を実現する c l a s s h o g e V i e w C o n t r o l l e r : U I V i e w C o n t r o l l e r , s h o w A l e r t T y p e , v a r m e s s a g e : S t r i n g = " " / / 実装しないとエラー になる f u n c s h o w A l e r t ( m e s s a g e : S t r i n g ) { . . . } / / 実装しないとエラー にな
t o c o l s h o w A l e r t T y p e { f u n c s h o w A l e r t ( m e s s a g e : S t r i n g ) } / / U I V i e w C o n t r o l l e r o r サブクラスで使用可能 e x t e n s i o n s h o w A l e r t T y p e w h e r e S e l f : U I V i e w C o n t r o l l e r { f u n c s h o w A l e r t ( m e s s a g e : S t r i n g ) { l e t a l e r t = U I A l e r t C o n t r o l l e r ( t i t l e : n i l , m e s s a g e : m e s s l e t d e f A c t i o n = U I A l e r t A c t i o n ( t i t l e : " O K " , s t y l e : . a l e r t . a d d A c t i o n ( d e f A c t i o n ) s e l f . p r e s e n t ( a l e r t , a n i m a t e d : t r u e , c o m p l e t i o n : n i l } }
関数名< 型引数> ( 引数) - > 戻り値の型 { } 他にもジェネリック型とかあるよ! 詳しくは神本買ってね!( 雑) / / Q i i t a R e q u e s t 型に準拠するクラス・ 構造体なら何でも渡せるA P I 呼び出し関数 f u n c c a l l < R e q u e s t : Q i i t a R e q u e s t > ( r e q u e s t : R e q u e s t ) - > O b s e r v a b l
serialization.md p u b l i c s t r u c t F a r m : C o d a b l e { p u b l i c l e t n a m e : S t r i n g p u b l i c l e t l o c a t i o n : L o c a t i o n p u b l i c l e t a n i m a l s : [ A n i m a l ] } d o { l e t f a r m = t r y J S O N D e c o d e r ( ) . d e c o d e ( F a r m . s e l f , f r o m : p a y l o a / / E x t r a c t e d a s u s e r t y p e s : l e t c o o r d i n a t e s = " \ ( f a r m . l o c a t i o n . l a t i t u d e , f a r m . l o c a t i o n . } c a t c h { / / E n c o u n t e r e d e r r o r d u r i n g d e s e r i a l i z a t i o n }
i f t 3 l e t s t r i n g = " w e c a n ' t " l e t p r e f i x e d = S t r i n g ( s t r i n g . c h a r a c t e r s . p r e f i x ( 6 ) ) > S w i f t 4 l e t s t r i n g = " w e c a n ` t " l e t p r e f i x e d = s t r i n g . p r e f i x ( 6 ) l e t s u b s t r i n g = s t r i n g [ i n d e x . . . ] 参考: 他にもDictionaly が使いやすくなったり色々 ある https://www.raywenderlich.com/163857/whats‑new‑swift‑4
Swift 3.2 でアプリが正常にビルドできるようにする 3. Swift4 対応のバー ジョンにライブラリをアップデー トする 4. Edit ‑> Convert ‑> To Current Swift Syntax… https://swift.org/migration‑guide‑swift4/