Submit Search
Upload
Kotlinのlet/run/applyのよもやま話
•
Download as PPTX, PDF
•
2 likes
•
4,246 views
Masaya Yashiro
Follow
using let / run / apply
Read less
Read more
Technology
Report
Share
Report
Share
1 of 21
Download now
Recommended
ループその3
ループその3
TENTO_slide
カーネル VM懇親会LT
カーネル VM懇親会LT
cosmo0920
半導体よりも低レイヤーなら分子でしょというネタLTです。
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
Yosuke Onoue
【材料力学】重ね合わせの原理
【材料力学】重ね合わせの原理
Kazuhiro Suga
1. 重ね合わせの原理を説明できる 2. 不静定問題に応用できる
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
Lockfree queue introduction in Japanese.
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
洋史 東平
Rubyの先祖でありながら、いまいちマイナーな存在であるプログラミング言語CLUの紹介です。合わせて日本で唯一CLUを使い続けた、東京工業大学理学部情報科学科木村泉研究室の取り組みについて簡単に触れます。
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
洋史 東平
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
Recommended
ループその3
ループその3
TENTO_slide
カーネル VM懇親会LT
カーネル VM懇親会LT
cosmo0920
半導体よりも低レイヤーなら分子でしょというネタLTです。
PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
Yosuke Onoue
【材料力学】重ね合わせの原理
【材料力学】重ね合わせの原理
Kazuhiro Suga
1. 重ね合わせの原理を説明できる 2. 不静定問題に応用できる
Lockfree Queue
Lockfree Queue
Kumazaki Hiroki
Lockfree queue introduction in Japanese.
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
Rubyの御先祖CLUのお話(OSC 2011 Shimane LT 資料)
洋史 東平
Rubyの先祖でありながら、いまいちマイナーな存在であるプログラミング言語CLUの紹介です。合わせて日本で唯一CLUを使い続けた、東京工業大学理学部情報科学科木村泉研究室の取り組みについて簡単に触れます。
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
Rubyの御先祖CLU(くるう)のお話(OSC2013 Hamamatsu 発表資料)
洋史 東平
冬のLock free祭り safe
冬のLock free祭り safe
Kumazaki Hiroki
Coqでsprintf
Coqでsprintf
Masaki Hara
upcamp 2012にて
Coqでsprintf
Coqでsprintf
Masaki Hara
upcamp 2012 にて
xv6から始めるSPIN入門
xv6から始めるSPIN入門
Ryousei Takano
カーネル/VM勉強会 第2回OS基礎(xv6)
CoqによるMsgPackの証明
CoqによるMsgPackの証明
Hiroki Mizuno
ProofSummit2011 http://partake.in/events/ac41261d-6026-4d09-8814-5ad3e58446e8 における発表
SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法
Satoshi Minakuchi
[注意事項] 単なる調査&試行錯誤時のメモです。 SMCTC: Sequential Monte Carlo Template Class http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic-research/johansen/smctc/ にて紹介されているライブラリの使用方法について, マニュアルとコードを読んでまとめたメモです. RcppSMCパッケージ http://dirk.eddelbuettel.com/code/rcpp.smc.html での利用を想定していますが, 当然ながらライブラリ本体部分に関する説明はRcppSMCとは無関係です. RcppSMCはsmctcライブラリのGSL依存部分をR依存に置き換え, Rcppによる利用を簡単にしたRのパッケージであると私は解釈しています. 本文中で言及しているmyfilterは以下のプロジェクトにあります. smctcのドキュメントで説明されている例よりも単純なSSMです. https://github.com/watermouth/RcppMySMC
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
Deep Learning JP
2019/06/10 Deep Learning JP: http://deeplearning.jp/hacks/
Erlang で再帰
Erlang で再帰
snow long
Erlang だと100000の階乗の結果もかえってくるよ
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Rubyの先祖でありながら、いまいちマイナーな存在であるプログラミング言語CLUの紹介です。合わせて日本で唯一CLUを使い続けた、東京工業大学理学部情報科学科木村泉研究室の取り組みについて簡単に触れます。
Ikeph9 2014-1112
Ikeph9 2014-1112
GM3D
池袋物理学勉強会第9回
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
pgf2alpha
Kyoto.lisp Tech Talk #1 p.5 :%s/素因数分化/素因数分解/g
PRML10.6 変分ロジスティック回帰
PRML10.6 変分ロジスティック回帰
Yo Ehara
PRML 10.6 変分ロジスティック回帰のスライドです. PRML読書会2010/4/10で発表しました. http://atnd.org/events/3518
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
Hideaki Nagamine
若干の修正と共にアップロード hnagaminはあなたの指摘を待っています!
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
OSC 2020 Online /Kyoto セミナー企画 Flutterの話題とコミュニティ紹介 セッションスライドです。 https://event.ospn.jp/osc2020-online-kyoto/session/161439
C++ lecture-0
C++ lecture-0
sunaemon
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Kazuki Ohta
Tricky implementation of Go ARM soft float
Tricky implementation of Go ARM soft float
Tetsuyuki Kobayashi
Tricky implementation of Go ARM soft float. Written in Japanese
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Start!! Ruby
Start!! Ruby
mitim
1/30 に行った、 Thrive on development 勉強会で使用したスライドです。 Rubyの基本について語っています。
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
KMC 関東例会での講座の資料 (by @nojima)
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
身内向けですがせっかく作ったので。 土日に深夜のテンションで作ったので抜け漏れ誤字脱字だらけだと思います…
Clojureで作る"simple"なDSL
Clojureで作る"simple"なDSL
Kent Ohashi
Clojureらしい内部DSLの開発方法について簡単に紹介。 "simple"なアプローチでDSLを作ろう!
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
DroidKaigi2018の発表資料です。 https://droidkaigi.jp/2018/
More Related Content
What's hot
Coqでsprintf
Coqでsprintf
Masaki Hara
upcamp 2012にて
Coqでsprintf
Coqでsprintf
Masaki Hara
upcamp 2012 にて
xv6から始めるSPIN入門
xv6から始めるSPIN入門
Ryousei Takano
カーネル/VM勉強会 第2回OS基礎(xv6)
CoqによるMsgPackの証明
CoqによるMsgPackの証明
Hiroki Mizuno
ProofSummit2011 http://partake.in/events/ac41261d-6026-4d09-8814-5ad3e58446e8 における発表
SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法
Satoshi Minakuchi
[注意事項] 単なる調査&試行錯誤時のメモです。 SMCTC: Sequential Monte Carlo Template Class http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic-research/johansen/smctc/ にて紹介されているライブラリの使用方法について, マニュアルとコードを読んでまとめたメモです. RcppSMCパッケージ http://dirk.eddelbuettel.com/code/rcpp.smc.html での利用を想定していますが, 当然ながらライブラリ本体部分に関する説明はRcppSMCとは無関係です. RcppSMCはsmctcライブラリのGSL依存部分をR依存に置き換え, Rcppによる利用を簡単にしたRのパッケージであると私は解釈しています. 本文中で言及しているmyfilterは以下のプロジェクトにあります. smctcのドキュメントで説明されている例よりも単純なSSMです. https://github.com/watermouth/RcppMySMC
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
Deep Learning JP
2019/06/10 Deep Learning JP: http://deeplearning.jp/hacks/
Erlang で再帰
Erlang で再帰
snow long
Erlang だと100000の階乗の結果もかえってくるよ
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Rubyの先祖でありながら、いまいちマイナーな存在であるプログラミング言語CLUの紹介です。合わせて日本で唯一CLUを使い続けた、東京工業大学理学部情報科学科木村泉研究室の取り組みについて簡単に触れます。
Ikeph9 2014-1112
Ikeph9 2014-1112
GM3D
池袋物理学勉強会第9回
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
pgf2alpha
Kyoto.lisp Tech Talk #1 p.5 :%s/素因数分化/素因数分解/g
PRML10.6 変分ロジスティック回帰
PRML10.6 変分ロジスティック回帰
Yo Ehara
PRML 10.6 変分ロジスティック回帰のスライドです. PRML読書会2010/4/10で発表しました. http://atnd.org/events/3518
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
Hideaki Nagamine
若干の修正と共にアップロード hnagaminはあなたの指摘を待っています!
What's hot
(12)
Coqでsprintf
Coqでsprintf
Coqでsprintf
Coqでsprintf
xv6から始めるSPIN入門
xv6から始めるSPIN入門
CoqによるMsgPackの証明
CoqによるMsgPackの証明
SMCTC ライブラリの使用方法
SMCTC ライブラリの使用方法
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
[DL Hacks] Deterministic Variational Inference for RobustBayesian Neural Netw...
Erlang で再帰
Erlang で再帰
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
Ikeph9 2014-1112
Ikeph9 2014-1112
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
RSA暗号で学ぶ初めてのCommonLisp #素因数分解(試行除算)
PRML10.6 変分ロジスティック回帰
PRML10.6 変分ロジスティック回帰
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
On Lisp読書会2014 第3回「第2章 関数 (つづき)」
Similar to Kotlinのlet/run/applyのよもやま話
Flutterを体験してみませんか
Flutterを体験してみませんか
cch-robo
OSC 2020 Online /Kyoto セミナー企画 Flutterの話題とコミュニティ紹介 セッションスライドです。 https://event.ospn.jp/osc2020-online-kyoto/session/161439
C++ lecture-0
C++ lecture-0
sunaemon
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Kazuki Ohta
Tricky implementation of Go ARM soft float
Tricky implementation of Go ARM soft float
Tetsuyuki Kobayashi
Tricky implementation of Go ARM soft float. Written in Japanese
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Start!! Ruby
Start!! Ruby
mitim
1/30 に行った、 Thrive on development 勉強会で使用したスライドです。 Rubyの基本について語っています。
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
KMC 関東例会での講座の資料 (by @nojima)
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
身内向けですがせっかく作ったので。 土日に深夜のテンションで作ったので抜け漏れ誤字脱字だらけだと思います…
Clojureで作る"simple"なDSL
Clojureで作る"simple"なDSL
Kent Ohashi
Clojureらしい内部DSLの開発方法について簡単に紹介。 "simple"なアプローチでDSLを作ろう!
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
DroidKaigi2018の発表資料です。 https://droidkaigi.jp/2018/
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
Fumiya Nozaki
Similar to Kotlinのlet/run/applyのよもやま話
(11)
Flutterを体験してみませんか
Flutterを体験してみませんか
C++ lecture-0
C++ lecture-0
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
Tricky implementation of Go ARM soft float
Tricky implementation of Go ARM soft float
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
Start!! Ruby
Start!! Ruby
C++ マルチスレッド 入門
C++ マルチスレッド 入門
Visual C++で使えるC++11
Visual C++で使えるC++11
Clojureで作る"simple"なDSL
Clojureで作る"simple"なDSL
Kotlinアンチパターン
Kotlinアンチパターン
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
Recently uploaded
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
設計ナイト2024にて発表した内容になります。
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
HVAC2024第1回 技術講習会 スライド
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
AI/IT系の会社だと「データ」は商売道具の一つかと思いますが、その「データ」って今の社会で一体どんな価値を持っていて、今後どのような責務を担わせるのが健全なのだろうか?という思考の発散をしてみました。 ※喋りメインだったのでスライドだけだと内容薄いと思います, 気になった方はhttps://x.com/wox_aiまで。
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
Osaka University
、コンテンツ制作の主体をプロのクリエーターからユーザーへと移行させている現状をご存じの方も多いでしょう。現在、画像コンテンツ制作現場では生成AIがクリエーターを支援するツールとして利用されています。セミナーでは、画像生成における自動化の境界についての議論が予定されています。 AIの利用には著作権や倫理的な問題も伴いますが、クリエーターとAIが共存し、センシング技術と統合することで新しい形のコンテンツが生み出されることが期待されています。
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~ 2024/6/12~14まで幕張メッセで開催されました、インターロップ併設アプリジャパンの展示会場内ROOM Bで、10:30~11:10の枠で登壇させてもらいましたセッション資料を公開します。
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
AIの進化により、自動化、最適化、予測など、多くの業務プロセスが大きく変わりつつあります。しかし、その可能性を最大限に引き出すためには、AIを理解し、適切に活用するための新たな働き方が求められます。本セミナーでは、生成AIが業務プロセスの自動化や意思決定の高速化など、業務効率化にどのように貢献しているのか、さらに生成AIとリモートワークの組み合わせが、従業員の生産性向上にどのように結びつくのかを解説します。
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
MacWorldTokyo
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
Hyper-V and SCVMM
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
インタラクション2024
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
人工知能学会 全国大会 (JSAI2024) で行ったポスター発表の内容です。
Recently uploaded
(10)
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代 The New Era of Content Economy Brought by Generative AI
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
Kotlinのlet/run/applyのよもやま話
1.
Kotlinのlet/run/applyのよ もやま話 @yashims85
2.
さてみなさん
3.
出会ってしま ったみたいで すね
4.
+
5.
コレを知っていれば一気にKotlinっぽ くなる、let/run/applyの使いドコロに ついてお話します。
6.
Kotlinを導入すると、どのクラスから も使用できるメソッド。 どれも1つのラムダを引数とする let/run/apply
7.
let
8.
fun <T, R>
T.let(block: (T) -> R): R
9.
let ● .let {}ブロックの中の最後の値が戻り値になる ●
そのインスタンス自身がクロージャの引数に なる ● メンバ変数をローカル化するのに使える ● nullableのunwrapに使える ● null-safetyにコードを書く時に超便利
10.
let: メンバ変数をローカル化する val name:
String? = null override fun onFinishInflate() { this.name?.let { this.user.name = it } } メンバ変数をローカル化出来る
11.
let: nullableのunwrapに使う val filePath:
String? = null val drawable: Drawable = filePath?.let { // この中はnull-safeになる BitmapDrawable.createFromPath(it) } ?: ColorDrawable(Color.TRANSPARENT) Elvis演算子 null-safe null-safeで繋げてるので、filePathがnull で無い時のみletの中が実行される。
12.
run
13.
fun <T, R>
T.run(block: T.() -> R): R
14.
run ● 単体でrun {}を実行することも可能 ●
その場合は、this.run {}と同等 ● クロージャ内ではthisのコンテキストが変わる ● クロージャ内の最後の実行結果がrun()の戻り 値になる ● メソッド内で即時関数のように使うのが良さ そう
15.
run: 即時関数として使う fun addPoint(user:
User, point: Int) { user.currentPoint += if (user.currentPoint + point <= 10) point else run { 10 - user.currentPoint } } 正直無くてもいい!!!
16.
apply
17.
fun <T> T.apply(block:
T.() -> Unit): T
18.
apply ● jsのcallやapplyと大体同じ ● クロージャの中ではthisのコンテキストが変わ る ●
applyの返り値は自分自身 ● プロパティを設定するのに便利 ● コンテキストスイッチとしても使える
19.
apply: プロパティを設定する val view:
View = View(this).apply { background = ColorDrawable(Color.TRANSPARENT) alpha = 1f isClickable = true } applyの中はそれ自信がthisになるので、 set系がまとめやすい。
20.
apply: コンテキストスイッチとして使う class ExampleUnitTest
{ @Test fun addition_isCorrect() { ColorDrawable(Color.RED).apply { // thisを検査すれば良い assert(this is Drawable) } } } 逆にthis以外を検査していたら検査項目として正し くない可能性が高い。
21.
まとめ ● letはメンバ変数のローカル化に使うと良い ● letはnullableのunwrapで使うと良い ●
runはブロックコンテキストを示すくらいしか 使いみちがなさそう ● applyはプロパティの設定に使える ● applyはコンテキストスイッチに使える
Download now