Scala再入門メモ:その1
挫折したままにしておくのはもったいない気がしてきたので。
超・基礎の基礎から再入門する。
資料: https://dwango.github.io/scala_text/
sbt consoleの起動
初回起動はとても時間がかかった。
$ sbt console Getting org.scala-sbt sbt 0.13.9 ... downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.9/jars/sbt.jar ... [SUCCESSFUL ] org.scala-sbt#sbt;0.13.9!sbt.jar (3893ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/main/0.13.9/jars/main.jar ... [SUCCESSFUL ] org.scala-sbt#main;0.13.9!main.jar (8053ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/compiler-interface/0.13.9/jars/compiler-interface-bin.jar ... [SUCCESSFUL ] org.scala-sbt#compiler-interface;0.13.9!compiler-interface-bin.jar (4261ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/compiler-interface/0.13.9/jars/compiler-interface-src.jar ... [SUCCESSFUL ] org.scala-sbt#compiler-interface;0.13.9!compiler-interface-src.jar (4059ms) ・・・略・・・ downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/cross/0.13.9/jars/cross.jar ... [SUCCESSFUL ] org.scala-sbt#cross;0.13.9!cross.jar (4000ms) downloading https://jcenter.bintray.com/org/scala-sbt/ivy/ivy/2.3.0-sbt-c5d1b95fdcc1e1007740ffbecf4eb07abc51ec93/ivy-2.3.0-sbt-c5d1b95fdcc1e1007740ffbecf4eb07abc51ec93.jar ... [SUCCESSFUL ] org.scala-sbt.ivy#ivy;2.3.0-sbt-c5d1b95fdcc1e1007740ffbecf4eb07abc51ec93!ivy.jar (1982ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/cache/0.13.9/jars/cache.jar ... [SUCCESSFUL ] org.scala-sbt#cache;0.13.9!cache.jar (4282ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/test-agent/0.13.9/jars/test-agent.jar ... [SUCCESSFUL ] org.scala-sbt#test-agent;0.13.9!test-agent.jar (4725ms) downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/apply-macro/0.13.9/jars/apply-macro.jar ... [SUCCESSFUL ] org.scala-sbt#apply-macro;0.13.9!apply-macro.jar (4058ms) :: retrieving :: org.scala-sbt#boot-app confs: [default] 52 artifacts copied, 0 already retrieved (17785kB/527ms) Getting Scala 2.10.5 (for sbt)... downloading https://jcenter.bintray.com/org/scala-lang/jline/2.10.5/jline-2.10.5.jar ... [SUCCESSFUL ] org.scala-lang#jline;2.10.5!jline.jar (1155ms) :: retrieving :: org.scala-sbt#boot-scala confs: [default] 5 artifacts copied, 0 already retrieved (24493kB/211ms) [info] Set current project to work (in build file:/Users/maetoo11/work/) [info] Updating {file:/Users/maetoo11/work/}work... [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Starting scala interpreter... [info] Welcome to Scala version 2.10.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45). Type in expressions to have them evaluated. Type :help for more information. scala>
Visual Studio Codeのシンタックスハイライトプラグイン
Visual Studio CodeでScalaを書くなら、下記プラグインを入れるとよい。
Scala | Visual Studio Marketplace
フォールスルーとは?
Switchの「フォールスルー」って何?
JavaとかCではフォールスルーの動作があると記載されていた。
こういうやつのことらしい。
int value = 0; switch (value) { case 0: case 10: // 処理1 break; default: // 処理2 }
参考:Java の switch 構文落とし穴 - Status Code 303 - See Other
「束縛される」とは?
var i = 0 というのは、"iという変数に0というIntのオブジェクトをbind(束縛)した" ということになる
scalaでは、なぜインクリメントやデクリメントができないのか? - scalaとか・・・ より
確かにインクリメント書いたらエラーになったな…。
「代入以外の方法で束縛できない」という部分で納得できた。
Listを引数でとるとき
下記のように書くと type List takes type parameters
というエラーが出る。
def func(list: List) = { // 処理 }
型を指定しなさいということ。
def func(list: List[String]) = { // 処理 }