Swift 学習メモ3
- xcode6.0.1
基本知識のまとめ
1.enum
1.1.scalaとほぼ同じ
* apple公式に記載されているself.rawValueはなくなったっぽい
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Fice, Six, Seven, Eight, NIne, Ten
case Jack, Queen, King
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
default:
return "ng"
}
}
}
let ace = Rank.Ace
ace.toRaw()
ace.simpleDescription()
let two = Rank.Two
two.toRaw()
let jack = Rank.Jack
jack.toRaw()
返り値がintなので、値は順番に割り当てられるようだ。微妙な仕様だ。
1.2.値の自動割当なし
enum Suit {
case Spades, Hearts, Diamonds, Clubs
func simpleDescription() -> String {
switch self {
case .Spades:
return "Spades"
case .Hearts:
return "Hearts"
default:
return "ng"
}
}
}
let hearts = Suit.Hearts
hearts.simpleDescription()
こっちのほうがしっくりくるし、よく使いそう。
2.struct
classと基本同じ。あんま使わない。
struct Card {
var rank : Rank
var suit : Suit
func simpleDescription() -> String {
return "rank \(rank.simpleDescription()) , suit\(suit.simpleDescription())"
}
}
let card = Card(rank: .Three, suit: .Spades)
card.simpleDescription()
class Card2 {
var rank : Rank
var suit : Suit
init(rank: Rank, suit: Suit) {
self.rank = rank
self.suit = suit
}
func simpleDescription() -> String {
return "rank \(rank.simpleDescription()) , suit\(suit.simpleDescription())"
}
}
let card2 = Card2(rank: .Three, suit: .Spades)
card.simpleDescription()
クラスの場合はinitがないとコンパイルできない
2.Protocol
クラスやstructを拡張する
objective-cと一緒。rubyのmixinのほうが好み。
protocol ExampleProtocol {
var simpleDescription: String {get}
mutating func adjust()
}
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "a vert simple class"
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += "adjust"
}
}
var a = SimpleClass()
a.adjust()
mutatingは名前付け。javaのabstructみたいなもんかな。
3.extension
型の拡張
rubyのオープンクラスと同じ。これはrubyより洗練されている
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
10.simpleDescription
4.Generics
まんまjava。このサイトではandroidでいつも紹介しているので割愛。
以上でA Swift Tourは終了。複数言語のプログラムを習得していればこのA Swift Tourを終了させればそこそこswiftでプログラムがかけると思います。
appleのLanguage Guideをみるとsubscriptとかclosureについて記載してあるので、使いたいと思う機能を写経しましょう。
というわけで次からは本格的にサンプルアプリの作成をしていきたいと思います。でわ。
ちなみにA Swift Tourはブログ用に写経しながらで5hくらいでした。参考までに。
参考サイト
0 件のコメント:
コメントを投稿