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頻出表現
Search
Moyuru Aizawa
November 28, 2016
Programming
0
280
Kotlin頻出表現
Kotlinでよくつかう文/式等
TwitterID変えました。@lvla0805 -> @MoyuruAizawa
Moyuru Aizawa
November 28, 2016
Tweet
Share
More Decks by Moyuru Aizawa
See All by Moyuru Aizawa
BLUETOOTH_SCAN and iBeacon
lvla
1
120
graphicsLayer
lvla
0
240
BluetoothDevice.getName()に裏切られた話
lvla
0
380
Jetpack Composeで画像クロップ機能を実装する
lvla
0
1.2k
Jetpack Compose drag gesture and pinch gesture
lvla
1
4.1k
Jetpack Compose Layout API
lvla
1
680
BLEを使ったアプリを継続的に開発するために
lvla
0
1.1k
RecyclerView.ItemAnimator
lvla
1
340
RecycledViewPool
lvla
1
240
Other Decks in Programming
See All in Programming
ゆくKotlin くるRust
exoego
1
180
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
330
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
150
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.5k
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
260
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
980
SQL Server 2025 LT
odashinsuke
0
120
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.2k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Exploring anti-patterns in Rails
aemeredith
2
220
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
The Cult of Friendly URLs
andyhume
79
6.7k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
180
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
210
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
260
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
210
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Transcript
,PUMJOසग़දݱ !MWMB
lvla lvla0805 Ѫᖒ๖ .PZVSV"J[BXB -FBEFOHJOFFSPGQBJST%JWFVSFLB *OD FVSFLB,PUMJO&WBOHFMJTU
+BWB,PUMJO3Y+BWB
None
QBJST $PVQMFT NBUDIHSPVQ *"$ OPXIJSJOH
None
NFFUT
WBM
‣ SFBEPOMZ ‣ جຊWBMΛར༻͍ͯ͠Δɻ ‣ ňͦΕWBSͰ͋Δඞཁ͋Δͷ ʼn ‣ ΈΜͳ+BWBॻ࣌͘ʹpOBMΛ͚ͭΔΑ͏ʹͳͬͨ WBM
val readOnliy = 10 readOnliy = 20 // error
/VMMBCMF
‣ /VMMΛڐ༰͢Δܕͱɺ/VMMΛڋ൱͢Δܕ͕໌֬ʹΘ͚ΒΕ͍ͯΔ ‣ OPU/VMMʹOVMMೖͰ͖ͳ͍͠ɺOVMMBCMFΛೖ͢Δ͜ͱग़དྷͳ ͍ ‣ ৗʹ/VMMΛҙࣝͯ͠ίʔσΟϯά͢Δ͜ͱʹͳΔ /VMMBCMF val nullable:
String? = null var notNull: String = null // error notNull: String = nullable // error
4BGF$BMM
‣ /VMMBCMF͕/VMMͷ߹ɺOVMM͕ฦ٫͞ΕΔɻ ‣ /VMMBCMF͕/VMMͰͳ͍߹ɺ͕࣮ؔߦ͞ΕΔϓϩύςΟͷ͕ฦ٫ ͞ΕΔɻ 4BGF$BMM nullablePerson?.toString() nullablePerson?.age
%FMFHBUFE1SPQFSUJFT
‣ ϓϩύςΟͷॳظԽΛҕৡͰ͖Δ ‣ ॳظԽΛԆͰ͖Δ ‣ ϥΠϑαΠΫϧʹґଘ͢ΔͷͰWBMͰॳظԽͰ͖Δ %FMFHBUFE1SPQFSUJFT val view by
bindView(R.id.view) val string by lazy { getString(R.string.foo) }
&YUFOTJPO'VODUJPO
‣ ܧঝ͢Δࣄͳ͘ɺطଘΫϥεʹؔΛՃͰ͖Δɻ &YUFOTJPO'VODUJPO fun Activity.toWeb(uri: Uri) { startActivity( Intent(Intent.ACTION_VIEW, uri)
) } fun Subscription.addTo(subscriptions: CompositeSubscription) { subscriptions(this) }
4JOHMF&YQSFTTJPO'VODUJPO
‣ ؔͷ࣮͕୯Ұࣜͷ߹ɺฦΓͷએݴɺϒϩοΫɺSFUVSOΛলུ Ͱ͖Δɻ 4JOHMF&YQSFTTJPO'VODUJPO @Provide fun provideApplicationContext() = applicationContext
)JHIFS0SEFS'VODUJPO
‣ ؔΛҾʹͱͬͨΓ ‣ ؔΛฦ٫͢Δؔ ‣ +BWB͕ؔϑΝʔετΫϥεΦϒδΣΫτ͡Όͳ͍͔Β͜Ε͕Ͱ͖ ͳ͍ )JHIFS0SEFS'VODUJPO fun foo(
function: (Int)->Unit ) { … } fun bar(): (Int)->String { … }
‣ 7JFXΛҾʹͱΓ6OJU 㲈7PJE Λฦ٫͢ΔؔͱಉͰ 4". public interface OnClickListener { void
onClick(View var1); }
‣ ؔͭͷΠϯλʔϑΣʔεΛҾʹऔΔؔʹɺؔΛͤ·͢ ‣ هड़ྔΊͬͪΌݮΔʜ 4". view.setOnClickListener({ view -> view.visibility =
View.GONE }) view.setOnClickListener { view -> view.visibility = View.GONE } view.setOnClickListener { it.visibility = View.GONE }
MFU
‣ ؔΛ͢ͱɺͦͷؔΛ࣮ߦͯ͘͠ΕΔɻ ‣ 4BGF$BMMͰMFUΛ࣮ߦ͍ͯ͠ΔͷͰɺOVMMͰͳ͍߹ʹͷΈ࣮ߦ͞Ε Δɻ MFU nullable?.let { it.doSomething }
BQQMZ
‣ Ϩγʔό 'PP'SBHNFOU ͷϓϩύςΟؔΛར༻͢ΔؔΛ͢ ‣ ͦΕΒ͕ద༻͞ΕͨϨγʔό͕ฦ٫͞ΕΔɻ BQQMZ FooFragment().apply { arguments
= Bundle().apply { pustString("key", "value") } }
‣ 4JOHMF&YQSFTTJPO'VODUJPOͱΈ߹ΘͤΔͱ͖ͬ͢Γ BQQMZ fun newInstance() = FooFragment().apply { arguments =
Bundle().apply { pustString("key", "value") } }
EFDMBSJOHQSPQFSUJFTBOE JOJUJBMJ[JOHUIFNGSPNQSJNBSZ DPOTUSVDUPS
‣ ϓϩύςΟͷએݴͱॳظԽΛɺϓϥΠϚϦίϯετϥΫλͰߦ͑Δ ‣ ϗϯτָʜ EFDMBSJOHQSPQFSUJFTBOEJOJUJBMJ[JOHUIFNGSPNQSJNBSZDPOTUSVDUPS class Person(val firstName: String, val
lastName: String, var age: Int) { // ... }
%BUB$MBTT
‣ FRVBMT IBTI$PEF UP4USJOH DPQZ ΛίϯύΠϧ࣌ʹੜͯ͠ ͘ΕΔ ‣ Ξοϓσʔτ͞Εͳ͍FRVBMT ͱ͞Α͏ͳΒͰ͖Δɻ
%BUB$MBTT data class Person(val firstName: String, val lastName: String, var age: Int)
OUBSPLOJU
‣ ֦ுؔΛͬͯBTTFSU5IBUΛ͍͍ײ͡ʹͯ͘͠ΕΔ ‣ ͏͜Ε͕ͳ͍ͱςετॻ͚ͳ͍ʜ LOJU @Test fun test() { (1
+ 2).should be 3 // assertThat(1 + 2, `is`(3)) }
TZTZBHJLNPDLJUP
‣ ֦ுؔΛͬͯNPDLJUPΛ͍͍ײ͡ʹͯ͘͠ΕΔɻ ‣ ͜Εͳ͍ͱςετͰ͖ͳ͍ʜ LNPDLJUP var item: Item = mock()
item.length().invoked.thenReturn(10) item.length().should be 10 item.verify().length()
5IBOLZPV