Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin Dynamic type
Search
coe
September 26, 2023
Technology
0
220
Kotlin Dynamic type
集まれSwift好き!Swift愛好会 vol.77 @ DeNA
2023/09/26
coe
September 26, 2023
Tweet
Share
More Decks by coe
See All by coe
About HealthKit nutrition
coe
0
250
iOSDC 2023 Web in tvOS and watchOS
coe
1
380
iOSDC 2023 Push To Talk
coe
1
1.1k
iOSDC手で触れずにアプリを動かす技術
coe
1
1.2k
iOSDC令和時代のXML処理を考える
coe
3
1.8k
iOSDC 2021 Restore
coe
5
1.7k
詳解Storyboard
coe
7
3.2k
あなたの知らない連絡先の世界
coe
14
7.9k
残り15%のユーザーにリーチするためのAccessibility
coe
0
620
Other Decks in Technology
See All in Technology
MapLibreとAmazon Location Service
dayjournal
1
160
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
450
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
230
Janus
bkuhlmann
1
490
Microsoft Intune 勉強会 第 2 回目
tamaiyutaro
1
220
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
840
生産性向上チームの紹介
cybozuinsideout
PRO
1
880
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
110
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
370
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
1
100
開発パフォーマンスを最大化するための開発体制
ham0215
2
460
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
430
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
16
3.9k
A Philosophy of Restraint
colly
197
16k
Product Roadmaps are Hard
iamctodd
44
9.7k
Writing Fast Ruby
sferik
621
60k
Into the Great Unknown - MozCon
thekraken
10
1k
Music & Morning Musume
bryan
41
5.6k
Atom: Resistance is Futile
akmur
259
25k
The Pragmatic Product Professional
lauravandoore
25
5.8k
Building an army of robots
kneath
300
41k
Raft: Consensus for Rubyists
vanstee
132
6.3k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Optimising Largest Contentful Paint
csswizardry
8
2.4k
Transcript
ڧ݄ %ZOBNJDUZQF ू·Ε4XJGU͖ʂ4XJGUѪձWPM ू·Ε,PUMJO͖ʂ,PUMJOѪձWPM!%F/"
w ڧ w J04ΤϯδχΞ
%ZOBNJDUZQF
w ڧ w J04Τ ϯδχ Ξ
%ZOBNJD UZQF
fun dynamicFun(x: dynamic): Unit { val dyn: dynamic = ...
} ,PUMJO%ZOBNJDUZQF
%ZOBNJDUZQF
%ZOBNJDUZQF w EZOBNJDܕ w WBMEZOEZOBNJDʜ w ͳΜͰೖΔ
fun dynamicFun(x: dynamic): Unit { }
fun dynamicFun(x: dynamic): Unit { } fun anyFun(x: Any): Unit
{ }
fun dynamicFun(x: dynamic): Unit { x.god } fun anyFun(x: Any):
Unit { x.god // ←ίϯύΠϧΤϥʔ }
%ZOBNJDUZQF w EZOBNJDܕ w WBMEZOEZOBNJDʜ w ͳΜͰೖΔ w ܕνΣοΫΛߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ
// xHuman fun dynamicFun(x: dynamic): Unit { x.back.left.left.up.scratch() } class
Back { val left: Back get() = Back() val right: Back get() = Back() val up: Back get() = Back() val down: Back get() = Back() fun scratch(): Unit { println(“ຬʂ”) } } class Human { val back = Back() }
%ZOBNJDUZQF w EZOBNJDܕ w WBMEZOEZOBNJDʜ w ͳΜͰೖΔ w ܕνΣοΫΛߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ w
ࣗ༝ʹϓϩύςΟؔΛݺΔ w EZOBNJDܕͷϓϩύςΟؔͷϦλʔϯEZOBNJDܕ
fun dynamicPlus(x: dynamic, y: dynamic): Unit { x + y
}
fun dynamicPlus(x: dynamic, y: dynamic): Unit { x + y
// 3 } dynamicPlus(1, 2)
fun dynamicPlus(x: dynamic, y: dynamic): Unit { x + y
// ڧ } dynamicPlus(“”, “ڧ”)
fun dynamicPlus(x: dynamic, y: dynamic): Unit { x + y
// iOSΤϯδχΞ } dynamicPlus(“iOS”, “ΤϯδχΞ”)
fun dynamicPlus(x: dynamic, y: dynamic): Unit { x + y
// 105ΤϯδχΞ } dynamicPlus(105, “ΤϯδχΞ”)
%ZOBNJDUZQF w EZOBNJDܕ w WBMEZOEZOBNJDʜ w ͳΜͰೖΔ w ܕνΣοΫߦΘͳ͍ʢίϯύΠϧΤϥʔʹͳΒͳ͍ʣ w
ࣗ༝ʹϓϩύςΟؔΛݺΔ w EZOBNJDܕͷϓϩύςΟEZOBNJDܕ w EZOBNJDಉ࢜ͷܭࢉՄೳ
͍͢͝ʂ
͡ΊΑ͏
,PUMJO+4
IUUQTLPUMJOMBOHPSHEPDTEZOBNJDUZQFIUNM %ZOBNJDUZQF
None