Contenu connexe
Similaire à Beginners Scala in FAN 20121009 (20)
Beginners Scala in FAN 20121009
- 1. 第2回
初心者Scala
Scalaの初歩
2012/10/09
@shitai246_
- 2. 自己紹介
❖ シラトリタイスケ
๏ Twitter: @shitai246_
๏ Blog: http://a4p.me/
❖ エンジニア
๏ Java歴8年・Scala歴1年・JoJo歴18年
๏ Webサービスとかアドテクノロジーとか
❖ マネージャー
๏ 管理しないこともひとつの管理手法です
❖ ㈱ファンコミュニケーションズではエンジニアを募集しています
๏ 成果報酬型のアフィリエイト、A8.net/Moba8.netを開発・運用・保守するお仕事。
๏ Javaがメイン、ところによりPerl、稀にC。もれなくレガシー。Scalaは積極採用中。
- 3. 前回までのあらすじ
❖ Scalaのインストール
❖ REPLでFizzBuzz
❖ Scalaの基本動作
๏ valとvarの違い
๏ Scalaのメソッド定義
๏ カリー化
๏ Listの関数いろいろ
- 4. 今日話すこと
❖ ScalaはScalableな言語
❖ Scalaでバッチを書いてみよう
❖ 質疑応答
- 5. ScalaはScalableな言語
❖ Scalaは完全なオブジェクト指向!
๏ Javaみたいにプリミティブ型(intとかcharとか)がないよ!
❖ REPLで確認してみよう!
scala> 1
res0: Int = 1
scala> res0.toString
res1: java.lang.String = 1
scala>
- 6. ScalaはScalableな言語
❖ 演算子に見えるものは全て関数です。
๏ + も - も == も < も関数です。
❖ REPLで確認してみよう!
scala> 1
res0: Int = 1
scala> res0.+(2)
res1: Int = 3
scala> res1.==(4)
res2: Boolean = false
- 7. ScalaはScalableな言語
❖ これらの関数名は自分で作ったクラスでも利用できます。
๏ 加算をしたいとき、def add() じゃなくて def +() が作れるから直感的にわかりやすい。
๏ 以下はわかりにくいJavaのメソッドの例
// BigDecimal の引き算
BigDecimal decimal1 = ∼
BigDecimal decimal2 = ∼
// decimal1 - decimal2
decimal1.subtract(decimal2);
// Dateの比較
Date date1 = ∼
Date date2 = ∼
if (date1.after(date2)) {
...
}
- 8. ScalaはScalableな言語
❖ 何が嬉しいの?
๏ 複素数や三角関数などを独自に実装した場合でも、ネイティブサポートされている型と同じ使用感で使える。
๏ 演算子(っぽく見えるもの)以外でもこういう書き方ができる。
❖ REPLで確認してみよう!
scala> 1 to 5
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)
scala> res0 foreach println
1
2
3
4
5
scala>
- 9. ScalaはScalableな言語
❖ おまけ
๏ Scaladocを読むと「+」や「==」などの関数がちゃんと載ってます。
๏ http://www.scala-lang.org/api/current/index.html#package
๏ たいがいのクラスにソースコードへのリンクがついてるので
ちょっと英語が?なときでも大丈夫。
- 10. Scalaでバッチを書いてみよう
❖ Scalaでバッチを書いてみよう!
๏ Main.scala ファイルを作ってコードを書く。
// main関数を書く場合にはobjectにしないといけない
object Main {
// 関数はdefで始める
// main関数は main(args : Array[String]) : Unit
def main(args : Array[String]) : Unit = {
// 引数argsを表示する
args.foreach(println)
}
}
- 11. Scalaでバッチを書いてみよう
❖ Scalaでバッチを書いてみよう!
๏ scala Main.scala 引数1 引数2 ... で実行できる。
$ scala Main.scala 1 10 100 a "b c"
1
10
100
a
bc
$
Notes de l'éditeur
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n