Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,150 @@ <h3 class="play-title">Objects and Classes</h3>
</div>
</div>
</div>
<h3 class="play-title">Enumerations and Structures</h3>
<div class="play-list">
<div class="play-list-item">
<div class="step-header">
<div class="step-num"><i class="fa fa-plus-square"></i> step1:列挙型</div>
</div>
<div class="play-code"><pre><code class="lang-swift">enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescription() -&gt; String {
switch self {
case .Ace:
return &quot;ace&quot;
case .Jack:
return &quot;jack&quot;
case .Queen:
return &quot;queen&quot;
case .King:
return &quot;king&quot;
default:
return String(self.rawValue)
}
}
}

let ace = Rank.Ace
let aceRawValue = ace.rawValue

if let convertedRank = Rank(rawValue: 3) {
let threeDescription = convertedRank.simpleDescription()
}
</code></pre>

<div class="information">列挙型はメソッドをもつことが可能でプロパティrawValueで列挙型の値にアクセスできる。<br>列挙型の値は整数で、最初の値(Ace)が1であるから続く値は順に1づつ加算されている。</div>
</div>
</div>
</div>
<div class="play-list">
<div class="play-list-item">
<div class="step-header">
<div class="step-num"><i class="fa fa-plus-square"></i> step2:構造体</div>
</div>
<div class="play-code"><pre><code class="lang-swift">class ClassAnimal {
var name: String = &quot;&quot;
var age: Int = 0
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let classALion = ClassAnimal(name: &quot;ライオン&quot;, age: 5)
let classBLion = classALion
classBLion.name = &quot;らいおん&quot;
classALion.name // らいおん

struct StructAnimal {
var name: String = &quot;&quot;
var age: Int = 0
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let structALion = StructAnimal(name: &quot;ライオン&quot;, age: 5)
var structBLion = structALion
structBLion.name = &quot;らいおん&quot;
structALion.name //ライオン
</code></pre>

<div class="information">構造体はメッソドやイニシャライズなどクラスと多くの振る舞いが同じであるが最も重要な違いは構造体は値渡し、クラスは参照渡しである。</div>
</div>
</div>
</div>
<h3 class="play-title">Protocols and Extensions</h3>
<div class="play-list">
<div class="play-list-item">
<div class="step-header">
<div class="step-num"><i class="fa fa-plus-square"></i> step1:プロトコル</div>
</div>
<div class="play-code"><pre><code class="lang-swift">protocol ExampleProtocol {
var simpleDescription: String {get}
mutating func adjust()
}

class SimpleClass: ExampleProtocol {
var simpleDescription: String = &quot;A very simple class.&quot;
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += &quot; Now 100% adjusted.&quot;
}
}

let simpleClass = SimpleClass()
let simpleClassInitDescription = simpleClass.simpleDescription
simpleClass.adjust()
let simpleClassChangedDescription = simpleClass.simpleDescription


struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = &quot;A simple structure&quot;
mutating func adjust() {
simpleDescription += &quot;(adjusted)&quot;
}
}

var simpleStructure = SimpleStructure()
let simpleStructureInitDescription = simpleStructure.simpleDescription
simpleStructure.adjust()
let simpleStructureChangedDescription = simpleStructure.simpleDescription
</code></pre>

<div class="information">プロトコルを宣言するためにキーワードprotocolを使用する。クラス、列挙型、構造体はすべてプロトコルに対応している。<br>構造体のメソッドを変更するためにはmutatingキーワードを使う。</div>
</div>
</div>
</div>
<div class="play-list">
<div class="play-list-item">
<div class="step-header">
<div class="step-num"><i class="fa fa-plus-square"></i> step2:エクステンション</div>
</div>
<div class="play-code"><pre><code class="lang-swift">protocol ExampleProtocol {
var simpleDescription: String {get}
mutating func adjust()
}

extension Int: ExampleProtocol {
var simpleDescription: String {
return &quot;The number \(self)&quot;
}
mutating func adjust() {
self += 42
}
}

print(7.simpleDescription)
</code></pre>

<div class="information">すでにある型に新たなメソッドやコンピューテッド・ プロパティなどの機能を追加する際に使用する。</div>
</div>
</div>
</div>
</section>
</div>
<div id="react"></div>
Expand Down
35 changes: 35 additions & 0 deletions src/jade/index.jade
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,41 @@ html
include:markdown ../md/ObjectsAndClasses/step5.md
.information プロパティにwillSetとdidSetを設定することで、プロパティの変更前後に処理を行うことができる。

h3.play-title Enumerations and Structures

.play-list
.play-list-item
.step-header
.step-num <i class="fa fa-plus-square"></i> step1:列挙型
.play-code
include:markdown ../md/EnumerationsAndStructures/step1.md
.information 列挙型はメソッドをもつことが可能でプロパティrawValueで列挙型の値にアクセスできる。<br>列挙型の値は整数で、最初の値(Ace)が1であるから続く値は順に1づつ加算されている。

.play-list
.play-list-item
.step-header
.step-num <i class="fa fa-plus-square"></i> step2:構造体
.play-code
include:markdown ../md/EnumerationsAndStructures/step2.md
.information 構造体はメッソドやイニシャライズなどクラスと多くの振る舞いが同じであるが最も重要な違いは構造体は値渡し、クラスは参照渡しである。

h3.play-title Protocols and Extensions

.play-list
.play-list-item
.step-header
.step-num <i class="fa fa-plus-square"></i> step1:プロトコル
.play-code
include:markdown ../md/ProtocolsAndExtensions/step1.md
.information プロトコルを宣言するためにキーワードprotocolを使用する。クラス、列挙型、構造体はすべてプロトコルに対応している。<br>構造体のメソッドを変更するためにはmutatingキーワードを使う。

.play-list
.play-list-item
.step-header
.step-num <i class="fa fa-plus-square"></i> step2:エクステンション
.play-code
include:markdown ../md/ProtocolsAndExtensions/step2.md
.information すでにある型に新たなメソッドやコンピューテッド・ プロパティなどの機能を追加する際に使用する。
#react


Expand Down
28 changes: 28 additions & 0 deletions src/md/EnumerationsAndStructures/step1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
```swift
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, 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"
case .King:
return "king"
default:
return String(self.rawValue)
}
}
}

let ace = Rank.Ace
let aceRawValue = ace.rawValue

if let convertedRank = Rank(rawValue: 3) {
let threeDescription = convertedRank.simpleDescription()
}
```
29 changes: 29 additions & 0 deletions src/md/EnumerationsAndStructures/step2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
```swift
class ClassAnimal {
var name: String = ""
var age: Int = 0
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let classALion = ClassAnimal(name: "ライオン", age: 5)
let classBLion = classALion
classBLion.name = "らいおん"
classALion.name // らいおん

struct StructAnimal {
var name: String = ""
var age: Int = 0
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

let structALion = StructAnimal(name: "ライオン", age: 5)
var structBLion = structALion
structBLion.name = "らいおん"
structALion.name //ライオン
```
32 changes: 32 additions & 0 deletions src/md/ProtocolsAndExtensions/step1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
```swift
protocol ExampleProtocol {
var simpleDescription: String {get}
mutating func adjust()
}

class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}

let simpleClass = SimpleClass()
let simpleClassInitDescription = simpleClass.simpleDescription
simpleClass.adjust()
let simpleClassChangedDescription = simpleClass.simpleDescription


struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += "(adjusted)"
}
}

var simpleStructure = SimpleStructure()
let simpleStructureInitDescription = simpleStructure.simpleDescription
simpleStructure.adjust()
let simpleStructureChangedDescription = simpleStructure.simpleDescription
```
17 changes: 17 additions & 0 deletions src/md/ProtocolsAndExtensions/step2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
```swift
protocol ExampleProtocol {
var simpleDescription: String {get}
mutating func adjust()
}

extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}

print(7.simpleDescription)
```