Slide 1

Slide 1 text

!&OWJSPONFOU =LFZ1BUI ପહݺ ໡҂ᄍྸ୆ૌ҂ᆩ֡Ć f o r  J 1M BZ H S P V OE       -5

Slide 2

Slide 2 text

} var employedBy = "YUMEMI Inc." var job = "iOS Developer" var organizerOf = "HAKATA.swift" var favoriteLanguage = "Swift" var twitter = "@lovee" var qiita = "lovee" var github = "el-hoshino" var additionalInfo = """ ߎી༝ܸ෻ຖݓეđၛᇀႿᄝੌ༯֥FamilyMart୤ޱࣕग़ “౨໙গčlaʣ䭓ʢjiʣԳࡏ䬟ཬ” """ final class Me: Developable, Talkable {

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ી ી

Slide 6

Slide 6 text

!&OWJSPONFOU aLFZ1BUI

Slide 7

Slide 7 text

ࢺക၂ུ໡หљམေԮ֥࢝ !&OWJSPONFOU =LFZ1BUI ֥หׄ

Slide 8

Slide 8 text

extension EnvironmentValues { @Entry var count: Int = 0 } struct CountView: View { @Environment(\.count) var count var body: some View { Text("Count: \(count)") } } struct ContentView: View { @State private var count = 0 var body: some View { VStack { CountView() // ... } .environment(\.count, count) } } ࠎԤႨم

Slide 9

Slide 9 text

extension EnvironmentValues { @Entry var count: Int = 0 } struct CountView: View { @Environment(\.count) var count var hash: Int { count.hashValue } var body: some View { Text("Count: \(hash)") } } struct ContentView: View { @State private var count = 0 var body: some View { VStack { CountView() // ... } .environment(\.count, count) } } ,FZ1BUI৵ࢲ 🤔

Slide 10

Slide 10 text

extension EnvironmentValues { @Entry var count: Int = 0 } struct CountView: View { @Environment(\.count.hashValue) var hash var body: some View { Text("Count: \(hash)") } } struct ContentView: View { @State private var count = 0 var body: some View { VStack { CountView() // ... } .environment(\.count, count) } } ,FZ1BUI৵ࢲ

Slide 11

Slide 11 text

extension EnvironmentValues { @Entry var count: Int = 0 } struct CountView: View { @Environment(\.count) var count var body: some View { VStack { // ... Button("Increment") { count += 1 } } } } struct ContentView: View { @State private var count = 0 var body: some View { CountView() .environment(\.count, count) } } սೆԩ৘ 🙅

Slide 12

Slide 12 text

extension EnvironmentValues { @Entry var _count: Binding = .constant(0) var count: Int { _count.wrappedValue } } struct CountView: View { @Environment(\.count) var count var body: some View { VStack { // ... Button("Increment") { _count.wrappedValue += 1 } } } } struct ContentView: View { @State private var count = 0 var body: some View { CountView() .environment(\._count, $count) } } սೆԩ৘ 🤔

Slide 13

Slide 13 text

extension EnvironmentValues { @Entry var _count: Binding = .constant(0) var count: Int { _count.wrappedValue } } struct CountUpAction { fileprivate var action: () -> Void func callAsFunction() { action() } } extension EnvironmentValues { var countUp: CountUpAction { .init { _count.wrappedValue += 1 } } } struct CountView: View { @Environment(\.count) var count @Environment(\.countUp) var countUp var body: some View { VStack { // ... Button("Increment") { countUp() } } } } struct ContentView: View { @State private var count = 0 var body: some View { CountView() .environment(\._count, $count) } } սೆԩ৘

Slide 14

Slide 14 text

struct CountUpAction { fileprivate var action: () -> Void func callAsFunction() { action() } } extension EnvironmentValues { var countUp: CountUpAction { .init { _count.wrappedValue += 1 } } } struct CountView: View { // ... @Environment(\.countUp) var countUp var body: some View { VStack { Text("Count: \(count)") .foregroundStyle(color.title) Button("Increment") { countUp() } } } } #Preview { @Previewable @State var previewCount: Int = 0 CountView() .environment(\._count, $previewCount) .environment(\.countUp, .init(action: { /* ... */ })) } 🙅 ᇿೆીႵ4FUUFS֥&OW

Slide 15

Slide 15 text

struct CountUpAction { fileprivate var action: () -> Void func callAsFunction() { action() } } extension EnvironmentValues { var countUp: CountUpAction { .init { _count.wrappedValue += 1 } } } struct CountView: View { // ... @Environment(\.countUp) var countUp var body: some View { // ... } } private extension EnvironmentValues { var previewAction: CountUpAction { .init { print("Preview Count Up!") _count.wrappedValue += 100 } } } #Preview { @Previewable @State var previewCount: Int = 0 CountView(countUp: .init(\.previewAction)) .environment(\._count, $previewCount) } ᇿೆીႵ4FUUFS֥&OW

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content