参考) javaでのFizzBuzz
void fizzBuzz(int n) { for (int i = 1; i <= n; i++) { if (i % 15 == 0) { System.out.println("FizzBuzz"); } else if (i % 3 == 0) { System.out.println("Fizz"); } else if (i % 5 == 0) { System.out.println("Buzz"); } else { System.out.println(i); } } }for文はジェネレータという構文を使う 例えば 1からn (n=3)までループする場合をREPLで実行してみる。 PowerShell(コマンドプロンプトでも動きました)で "sbt" → "console" でコンソールを立ち上げたら :pasteでREPLモードにしてソースを入力。 入力したら Ctrl+D で実行。
C:\work>sbt Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; port was removed in 8.0 [info] Updated file C:\work\project\build.properties: set sbt.version to 1.2. [info] Loading project definition from C:\work\project [info] Updating ProjectRef(uri("file:/C:/work/project/"), "work-build")... [info] Done updating. [info] Set current project to work (in build file:/C:/work/) [info] sbt server started at local:sbt-server-840c8505c776f9e640b8 sbt:work> console [info] Starting scala interpreter... Welcome to Scala 2.12.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201). Type in expressions for evaluation. Or try :help. scala> :paste // Entering paste mode (ctrl-D to finish) val n = 3 for { i <- (1 to n) } { println(i) } // Exiting paste mode, now interpreting. 1 2 3 n: Int = 3 scala>javaのこんなソースは…
for (int i = 0; i <= 12; i += 3) { if (i % 2 == 0) { for (int j = 1; j <= 3; j++) { System.out.println(i * j); } } }scalaでは…
for { i <- (0 to 12 by 3) if i % 2 == 0 j <- (1 to 3) } { println(i * j) }forの {} は文であるが値は返らない (Unit型) iの値が欲しい場合は yield (いーるどぅ と呼べば良い?) を使う
val result = for { i <- (1 to 3) } yield { i }
if式
FizzBuzzをscalaで作ると…def fizzBuzz(n: Int): Unit = for { i <- 1 to n } { if (i % 15 == 0) { println("FizzBuzz") } else if (i % 3 == 0) { println("Fizz") } else if (i % 5 == 0) { println("Buzz") } else { println(i) } }今回はVSCodeで作ってみる。 C:\work2フォルダを作り、そこにsample.scalaの名前で上記ソースを作成。 ただ、これだとmainが無いから動かないのかな? ということで前回のHelloWorldのソースと合体させる。 (object Hello と mainメソッドを追加)
object Hello { def main(args: Array[String]) = { fizzBuzz(15) } def fizzBuzz(n: Int): Unit = for { i <- 1 to n } { if (i % 15 == 0) { println("FizzBuzz") } else if (i % 3 == 0) { println("Fizz") } else if (i % 5 == 0) { println("Buzz") } else { println(i) } } }
PowerShell(コマンドプロンプト)でC:\work2へ移動し "sbt"コマンドと"run"コマンドを実行
→ OK
0 件のコメント:
コメントを投稿