Soumettre la recherche
Mettre en ligne
Javaから始めるscalaっぽい書き方
•
Télécharger en tant que PPTX, PDF
•
2 j'aime
•
1,908 vues
Kenji Doi
Suivre
OOプログラミング経験者が、 scalaっぽく書くためTipsをハンズオン形式で取り上げました
Lire moins
Lire la suite
Ingénierie
Signaler
Partager
Signaler
Partager
1 sur 20
Télécharger maintenant
Recommandé
Scalaのオブジェクトの話
Scalaのオブジェクトの話
Yasuyuki Maeda
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
dcubeio
こわくない型クラス
こわくない型クラス
Kota Mizushima
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Scalaで型クラス入門
Scalaで型クラス入門
Makoto Fukuhara
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Skinny Meetup Tokyo 2 日本語スライド
Skinny Meetup Tokyo 2 日本語スライド
Kazuhiro Sera
Skinny 2 Update
Skinny 2 Update
Kazuhiro Sera
Recommandé
Scalaのオブジェクトの話
Scalaのオブジェクトの話
Yasuyuki Maeda
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
【D3 公開用】ドメイン駆動設計とscala 〜既存プロジェクトへの適用〜
dcubeio
こわくない型クラス
こわくない型クラス
Kota Mizushima
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Scalaで型クラス入門
Scalaで型クラス入門
Makoto Fukuhara
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Skinny Meetup Tokyo 2 日本語スライド
Skinny Meetup Tokyo 2 日本語スライド
Kazuhiro Sera
Skinny 2 Update
Skinny 2 Update
Kazuhiro Sera
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
Ryuji Yamashita
たのしい高階関数
たのしい高階関数
Shinichi Kozake
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
増田 亨
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
Tokoroten Nakayama
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Yahoo!デベロッパーネットワーク
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
Ichito Nagata
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
fanscala1 3 sbt
fanscala1 3 sbt
Toshiki Shinozaki
Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Taisuke Shiratori
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
Hideyuki Takeuchi
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
Contenu connexe
En vedette
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
Ryuji Yamashita
たのしい高階関数
たのしい高階関数
Shinichi Kozake
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
増田 亨
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
Tokoroten Nakayama
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Yahoo!デベロッパーネットワーク
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
Ichito Nagata
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
En vedette
(10)
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
たのしい高階関数
たのしい高階関数
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
イベント・ソーシングを知る
イベント・ソーシングを知る
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
データ分析グループの組織編制とその課題 マーケティングにおけるKPI設計の失敗例 ABテストの活用と、機械学習の導入 #CWT2016
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
Automation of Rolling Upgrade of Hadoop Cluster without Data Lost and Job Fai...
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Similaire à Javaから始めるscalaっぽい書き方
fanscala1 3 sbt
fanscala1 3 sbt
Toshiki Shinozaki
Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Yuto Suzuki
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Taisuke Shiratori
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
Hideyuki Takeuchi
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
Similaire à Javaから始めるscalaっぽい書き方
(7)
fanscala1 3 sbt
fanscala1 3 sbt
Scalaの現状と今後
Scalaの現状と今後
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
scala-kaigi1-sbt
scala-kaigi1-sbt
Javaから始めるscalaっぽい書き方
1.
scalaっぽい書き方 土井 健司
2.
想定する参加者 Scalaを触り始めた人 とりあえずJavaっぽくScala書いている Intellij IDEA +
scala pluginが入っている ※ 全く触ったことがない方でも、雰囲気は伝わる...はず
3.
本日のゴール ハンズオン形式でJavaっぽいScalaをScalaっぽく書く
4.
Mainクラス作成 1. File ->
New -> Project -> Scala 2. scalikeプロジェクト作成 a. ※ scala SDKを選択、もしくはNewからscala-sdk-2.11.7を選択 3. srcを選択して右クリック→New→scalaクラス 4. name: Main, Kind: Object 5. 中でmainと入力し、保管でenter 6. println(“Hello World!”) 7. mainメソッドを右クリック→Run’Main’
5.
お題(3分) 引数を取得 アカウント: account 予算: budget 予算が0以下でエラー 予算は手数料100円を天引き 出力:
○○さんの予算は○円です
6.
Javaっぽいイメージ
7.
お願い! var -> val
8.
Optionからはじめよう! 例外、null、early exit、全部Option! Some(x), None map filter 取り出し pattern
match get, getOrElse
9.
Scalaっぽくなった\(^o^)/
10.
演習問題1 (3分くらい) 3つ目の引数を追加 期間: weeks 期間は4週までとする 日数に変換する こんにちは○○さん、あなたの予算は○円([days]日)です※ ※
少し難しい!
11.
Option同士の処理 Option同士の処理 (flatMap) for
12.
解答例
13.
エラーを区別したい! Noneじゃなくてエラーメッセージを残したい Right(x), Left(e)(あんまり使わない...) right.map right.filter Option ->
Right(定石) toRight(SomeThingLeft)
14.
エラーが区別できた\(^o^)/
15.
演習問題2 (3分くらい) 日割り予算を求めよ budget /
days 計算はメソッド化すること 引数は予算と日付 日割り金額が1円以下の場合はエラー private def dailyBudget(...) = {...} ○○さんの日割り予算は〇〇円です
16.
よりよく書くヒント 引数はInt? Option[Int]? OptionでもEitherでも使える汎用さ=Int mapやforで中身を取り出して、意識してIntで書く 返り値はInt? Option?
Either? Optionが例外の存在を伝える Optionだから汎用的。エラー文言は呼び出し側で変換すれば良い Option⇔Either等変換の手助けメソッドはどんどん活用
17.
解答例
18.
Tips 例外を抑制してOption化 scala.util.Try().toOption 関数の引数省略 関数の引数は_で1回ずつ参照可能 eitherはscalazの方がげふんげふん...
19.
関数型言語の3大要素(諸説あり) Immutable ← やや今日のテーマ 副作用がない
← 今日のテーマど真ん中 (関数は第一級関数)
20.
まとめ 例外、null、early exit→全部Option! 単体: map,
filter 複数: for 結果: pattern match, getOrElse エラー: toRight 切り出し: メソッドを汎用的に
Télécharger maintenant