[iOS] [Swift] Sequence Protocol의 샘플 코드(사내 학습회 자료)
개시하다
자사 내 학습회에서는 세quence Protocol에서 빈번하게 사용되는 물품을 소개하고 샘플 코드를 첨부했다.
코드는 간단하지만 어렵게 쓴 것이 회사 내부에만 남아 있는 것은 아쉽기 때문에 공개한다.
참가자들에게'문제'(답안 삭제)를 보내고,'손잡이'등을 만들어 보면 즐거울 것이다
컨디션
・Xcode 10.1
・Swift4.2
샘플 코드
Sequence.playgroundimport UIKit
struct Student {
var code: String
var firstName: String
var lastName: String
var score: Int
var fullName: String {
return firstName + " " + lastName
}
}
var students = [Student]()
students.append(Student(code: "AB100000", firstName: "Taro", lastName: "Yamada", score: 62))
students.append(Student(code: "AB100001", firstName: "Ichiro", lastName: "Suzuki", score: 81))
students.append(Student(code: "AB100002", firstName: "Hanako", lastName: "Sato", score: 96))
students.append(Student(code: "AB100003", firstName: "Jiro", lastName: "Takahashi", score: 58))
students.append(Student(code: "AB100004", firstName: "Ichiro", lastName: "Tanaka", score: 75))
students.append(Student(code: "AB100005", firstName: "Hanako", lastName: "Yamada", score: 96))
// 70点以上の生徒を抽出する
let filtered = students.filter { (student) -> Bool in
return student.score >= 70
}
for (i, student) in filtered.enumerated() {
print("70点以上の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
70点以上の生徒1人目はIchiro Suzukiです。
70点以上の生徒2人目はHanako Satoです。
70点以上の生徒3人目はIchiro Tanakaです。
70点以上の生徒4人目はHanako Yamadaです。
*/
// "コード, フルネーム"という形式の文字列の配列に変換する
let stringArray = students.map { (student) -> String in
return "\(student.code), \(student.fullName)"
}
stringArray.forEach {
print($0)
}
/*
AB100000, Taro Yamada
AB100001, Ichiro Suzuki
AB100002, Hanako Sato
AB100003, Jiro Takahashi
AB100004, Ichiro Tanaka
AB100005, Hanako Yamada
*/
// 全生徒の点数を合計する
let total = students.reduce(0) { (total, student) -> Int in
return total + student.score
}
print("全生徒のScoreの合計は\(total)点です")
/*
全生徒のScoreの合計は468点です
*/
// key=コード、value=フルネームというDictionaryに変換する
let dic = students.reduce(into: [String: String]()) { (dic, student) in
return dic[student.code] = student.fullName
}
dic.forEach {
print($0)
}
/*
(key: "AB100000", value: "Taro Yamada")
(key: "AB100001", value: "Ichiro Suzuki")
(key: "AB100003", value: "Jiro Takahashi")
(key: "AB100004", value: "Ichiro Tanaka")
(key: "AB100005", value: "Hanako Yamada")
(key: "AB100002", value: "Hanako Sato")
*/
// Satoが含まれているか?
let existsSato = students.contains { (student) -> Bool in
return student.lastName == "Sato"
}
print("Satoさんが含まれているか = \(existsSato)")
/*
Satoさんが含まれているか = true
*/
// Yamadaさんの1件目を取得する
let first = students.first { (student) -> Bool in
return student.lastName == "Yamada"
}
if let first = first {
print(first.fullName)
} else {
print("見つかりませんでした")
}
/*
Taro Yamada
*/
// FirstName>LastName順にソートする
let sorted = students.sorted { (student1, student2) -> Bool in
if student1.firstName == student2.firstName {
return student1.lastName < student2.lastName
} else {
return student1.firstName < student2.firstName
}
}
for (i, student) in sorted.enumerated() {
print("FirstName>LastName順の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
FirstName>LastName順の生徒1人目はHanako Satoです。
FirstName>LastName順の生徒2人目はHanako Yamadaです。
FirstName>LastName順の生徒3人目はIchiro Suzukiです。
FirstName>LastName順の生徒4人目はIchiro Tanakaです。
FirstName>LastName順の生徒5人目はJiro Takahashiです。
FirstName>LastName順の生徒6人目はTaro Yamadaです。
*/
학습회에서 사용한 참고 자료
샘플 코드로 소개하는 것 외에 나는 또 많은 편리한 방법이 있다고 생각한다.
4SwiftDoc.org 예
• 샘플 코드 있음
• 일람성이 뛰어나 찾기 쉽다
그래서 나는 학습회의 교재로서 매우 쓰기 좋다고 생각한다.
Sequence Protocol 프로젝트는 여기에 있습니다.
https://swiftdoc.org/v4.2/protocol/sequence/
Reference
이 문제에 관하여([iOS] [Swift] Sequence Protocol의 샘플 코드(사내 학습회 자료)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/y-some/items/0bd00e3a143939725c09
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
・Xcode 10.1
・Swift4.2
샘플 코드
Sequence.playgroundimport UIKit
struct Student {
var code: String
var firstName: String
var lastName: String
var score: Int
var fullName: String {
return firstName + " " + lastName
}
}
var students = [Student]()
students.append(Student(code: "AB100000", firstName: "Taro", lastName: "Yamada", score: 62))
students.append(Student(code: "AB100001", firstName: "Ichiro", lastName: "Suzuki", score: 81))
students.append(Student(code: "AB100002", firstName: "Hanako", lastName: "Sato", score: 96))
students.append(Student(code: "AB100003", firstName: "Jiro", lastName: "Takahashi", score: 58))
students.append(Student(code: "AB100004", firstName: "Ichiro", lastName: "Tanaka", score: 75))
students.append(Student(code: "AB100005", firstName: "Hanako", lastName: "Yamada", score: 96))
// 70点以上の生徒を抽出する
let filtered = students.filter { (student) -> Bool in
return student.score >= 70
}
for (i, student) in filtered.enumerated() {
print("70点以上の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
70点以上の生徒1人目はIchiro Suzukiです。
70点以上の生徒2人目はHanako Satoです。
70点以上の生徒3人目はIchiro Tanakaです。
70点以上の生徒4人目はHanako Yamadaです。
*/
// "コード, フルネーム"という形式の文字列の配列に変換する
let stringArray = students.map { (student) -> String in
return "\(student.code), \(student.fullName)"
}
stringArray.forEach {
print($0)
}
/*
AB100000, Taro Yamada
AB100001, Ichiro Suzuki
AB100002, Hanako Sato
AB100003, Jiro Takahashi
AB100004, Ichiro Tanaka
AB100005, Hanako Yamada
*/
// 全生徒の点数を合計する
let total = students.reduce(0) { (total, student) -> Int in
return total + student.score
}
print("全生徒のScoreの合計は\(total)点です")
/*
全生徒のScoreの合計は468点です
*/
// key=コード、value=フルネームというDictionaryに変換する
let dic = students.reduce(into: [String: String]()) { (dic, student) in
return dic[student.code] = student.fullName
}
dic.forEach {
print($0)
}
/*
(key: "AB100000", value: "Taro Yamada")
(key: "AB100001", value: "Ichiro Suzuki")
(key: "AB100003", value: "Jiro Takahashi")
(key: "AB100004", value: "Ichiro Tanaka")
(key: "AB100005", value: "Hanako Yamada")
(key: "AB100002", value: "Hanako Sato")
*/
// Satoが含まれているか?
let existsSato = students.contains { (student) -> Bool in
return student.lastName == "Sato"
}
print("Satoさんが含まれているか = \(existsSato)")
/*
Satoさんが含まれているか = true
*/
// Yamadaさんの1件目を取得する
let first = students.first { (student) -> Bool in
return student.lastName == "Yamada"
}
if let first = first {
print(first.fullName)
} else {
print("見つかりませんでした")
}
/*
Taro Yamada
*/
// FirstName>LastName順にソートする
let sorted = students.sorted { (student1, student2) -> Bool in
if student1.firstName == student2.firstName {
return student1.lastName < student2.lastName
} else {
return student1.firstName < student2.firstName
}
}
for (i, student) in sorted.enumerated() {
print("FirstName>LastName順の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
FirstName>LastName順の生徒1人目はHanako Satoです。
FirstName>LastName順の生徒2人目はHanako Yamadaです。
FirstName>LastName順の生徒3人目はIchiro Suzukiです。
FirstName>LastName順の生徒4人目はIchiro Tanakaです。
FirstName>LastName順の生徒5人目はJiro Takahashiです。
FirstName>LastName順の生徒6人目はTaro Yamadaです。
*/
학습회에서 사용한 참고 자료
샘플 코드로 소개하는 것 외에 나는 또 많은 편리한 방법이 있다고 생각한다.
4SwiftDoc.org 예
• 샘플 코드 있음
• 일람성이 뛰어나 찾기 쉽다
그래서 나는 학습회의 교재로서 매우 쓰기 좋다고 생각한다.
Sequence Protocol 프로젝트는 여기에 있습니다.
https://swiftdoc.org/v4.2/protocol/sequence/
Reference
이 문제에 관하여([iOS] [Swift] Sequence Protocol의 샘플 코드(사내 학습회 자료)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/y-some/items/0bd00e3a143939725c09
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
struct Student {
var code: String
var firstName: String
var lastName: String
var score: Int
var fullName: String {
return firstName + " " + lastName
}
}
var students = [Student]()
students.append(Student(code: "AB100000", firstName: "Taro", lastName: "Yamada", score: 62))
students.append(Student(code: "AB100001", firstName: "Ichiro", lastName: "Suzuki", score: 81))
students.append(Student(code: "AB100002", firstName: "Hanako", lastName: "Sato", score: 96))
students.append(Student(code: "AB100003", firstName: "Jiro", lastName: "Takahashi", score: 58))
students.append(Student(code: "AB100004", firstName: "Ichiro", lastName: "Tanaka", score: 75))
students.append(Student(code: "AB100005", firstName: "Hanako", lastName: "Yamada", score: 96))
// 70点以上の生徒を抽出する
let filtered = students.filter { (student) -> Bool in
return student.score >= 70
}
for (i, student) in filtered.enumerated() {
print("70点以上の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
70点以上の生徒1人目はIchiro Suzukiです。
70点以上の生徒2人目はHanako Satoです。
70点以上の生徒3人目はIchiro Tanakaです。
70点以上の生徒4人目はHanako Yamadaです。
*/
// "コード, フルネーム"という形式の文字列の配列に変換する
let stringArray = students.map { (student) -> String in
return "\(student.code), \(student.fullName)"
}
stringArray.forEach {
print($0)
}
/*
AB100000, Taro Yamada
AB100001, Ichiro Suzuki
AB100002, Hanako Sato
AB100003, Jiro Takahashi
AB100004, Ichiro Tanaka
AB100005, Hanako Yamada
*/
// 全生徒の点数を合計する
let total = students.reduce(0) { (total, student) -> Int in
return total + student.score
}
print("全生徒のScoreの合計は\(total)点です")
/*
全生徒のScoreの合計は468点です
*/
// key=コード、value=フルネームというDictionaryに変換する
let dic = students.reduce(into: [String: String]()) { (dic, student) in
return dic[student.code] = student.fullName
}
dic.forEach {
print($0)
}
/*
(key: "AB100000", value: "Taro Yamada")
(key: "AB100001", value: "Ichiro Suzuki")
(key: "AB100003", value: "Jiro Takahashi")
(key: "AB100004", value: "Ichiro Tanaka")
(key: "AB100005", value: "Hanako Yamada")
(key: "AB100002", value: "Hanako Sato")
*/
// Satoが含まれているか?
let existsSato = students.contains { (student) -> Bool in
return student.lastName == "Sato"
}
print("Satoさんが含まれているか = \(existsSato)")
/*
Satoさんが含まれているか = true
*/
// Yamadaさんの1件目を取得する
let first = students.first { (student) -> Bool in
return student.lastName == "Yamada"
}
if let first = first {
print(first.fullName)
} else {
print("見つかりませんでした")
}
/*
Taro Yamada
*/
// FirstName>LastName順にソートする
let sorted = students.sorted { (student1, student2) -> Bool in
if student1.firstName == student2.firstName {
return student1.lastName < student2.lastName
} else {
return student1.firstName < student2.firstName
}
}
for (i, student) in sorted.enumerated() {
print("FirstName>LastName順の生徒\(i+1)人目は\(student.fullName)です。")
}
/*
FirstName>LastName順の生徒1人目はHanako Satoです。
FirstName>LastName順の生徒2人目はHanako Yamadaです。
FirstName>LastName順の生徒3人目はIchiro Suzukiです。
FirstName>LastName順の生徒4人目はIchiro Tanakaです。
FirstName>LastName順の生徒5人目はJiro Takahashiです。
FirstName>LastName順の生徒6人目はTaro Yamadaです。
*/
샘플 코드로 소개하는 것 외에 나는 또 많은 편리한 방법이 있다고 생각한다.
4SwiftDoc.org 예
• 샘플 코드 있음
• 일람성이 뛰어나 찾기 쉽다
그래서 나는 학습회의 교재로서 매우 쓰기 좋다고 생각한다.
Sequence Protocol 프로젝트는 여기에 있습니다.
https://swiftdoc.org/v4.2/protocol/sequence/
Reference
이 문제에 관하여([iOS] [Swift] Sequence Protocol의 샘플 코드(사내 학습회 자료)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-some/items/0bd00e3a143939725c09텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)