Seqは要素が一列に並んだ構造を表現するのに用いられる。実態はListのようです。
Seqは要素が一列に並んだ構造を表現するのに用いられる。実態はListのようです。
ScalaではListの先頭はnumbers.headと書くし、Kotlinではnumbers.first()と書くようです。Scalaではtailrecはキーワードで無いようです。Scalaでは最後に評価されたオブジェクト(?)が関数の値になりますので、returnは省略できるようですが、あった方が安心する、気がします。
実行結果は55になります。
コメントアウトしてるところはコップ本の内容です。それのif式を分かりやすいように、書き換えました。
if式を分かりやすくしたので、Kotlinの方が先に出来ましたが、苦労しました。return値を決めて関数のタイプをIntにすると、再帰のリターンらしく、分かりませんが、return 0になりました。と言うか?上の図でrtvとあるところにreturnを入れたんですが、それだけでは構文エラー。多分ですが、if式の終端にreturnが欲しいようでした。それをreturn0にしました。でも実際は要らない。なので見つけたときのiを外側の変数rtvに保存したら旨くいきました。
Scalaではfor()またはfor{}の中、()や{}の中にジェネレーターとかフィルターを書けるようです。Kotlinには無いようですが、同じ機能は書けるようです。但しif式で書いていくと、深くなってくるように思います。何故かand,orでif式が書けなかったのが分かりません。andならif式を深くすることで可能でも、or条件ならそうはいかないでしょう。なんか勘違いしてますかね。(-_-;)
上の図のvalueはval,varは無いですし、例えば付いたとして、for()の外では有効でしたか?
多分ですが、Kotlinには拘束といくことは無いのかもしれません。フィルターも無いかもしれません。and,orは絶対あるんですが、if式で使えなかったのは何故?
実行画面は同じようには出来ました。
上の図では、上の方のforが分かり辛いかも。filesHereから該当したファイルがfileになるわけでしょう。でも違う感じですね。fileから選ぶ感じ。それは下の方のforですか?
KotlinではScalaの上のようなfor式は書けませんでした。
上の図では一番上の例を命令型と呼んでるようです。varを使わないコーディングを勧めています。「Scalaスケーラブルプログラミング第3版」では。
Kotlinでもだいたい同じ感じでできます。2番か3番がわかりやすいかもしれません。但し微妙に違うので、混乱します。自分は。(-_-;)
ScalaとKotlinを比べると、args : Array[String]と args : Array<String>で違いますね。どちらも配列のアクセスに使う記号()、[]では無いようです。何故か。
i += 1ですし、i++とも書けます。Scalaではi++は書けないようです。
上はKotlinで、下はScala。args[0]がKotlinでargs(0)はScala。一般的には()は関数の引数を書くとき、[]は配列の時と思ってましたが、Scalaには事情があるんでしょうか?「Scalaスケーラブルプログラミング第3版」P053ではコンパイラを使ってますが、LinuxのエディタVimなどが不慣れですので、コンパイラを使うときはintelliJ IDEAの方が自分では慣れてます。
WSL(Windows Subsystem for Linux)にUbuntuが入ってました。でもscalaはその時点ではインストールされて無くてメッセージ出ました。sudo apt-get install scalaだったか?で一発でインストールできました。Kotlinはそうはいきませんでした。scalaとkotlinが同じように使えれば便利ですよね。kotlinのインストールで参考にしたサイトはリンクを張っておきました。
自分の場合はvimとかはあまり使えないので、もっぱらREPLで確認するためだけです。上の図のようにです。モットモあまり長いのは向きません。長い場合はintelliJ IDEAに頼った方が楽です。
上の図で実機とUnityのエディタの切り分けをしてます。ね。どっちでも動く、がキーボード入力の方が反応は良い様です。前に一度やってみたことがあったんですが、実機が無かったのでやれませんでした。上のネタ本は「Unity5 3D/2Dゲーム開発」からです。
上の2枚はUnityでの実行です。
上の1枚は実機での実行です。但しGravityControllerが不備か?反応が鈍いし、思った通りの動きをしません。"(-""-)"Unityは自分の感覚としては、バージョンの違いで変化が少ないと思います。今はVer5.6と2018年版を入れてます。
上と下ともUnityでやってみた画面です。
Paddleが動いているのがわかります。メッセージが出てますが、ここは無視。"(-""-)"
上と下はスマホ。始まりは良かったんです。がPaddleをどうすれば動くの?矢印キーないですね。
むなしくBGMだけ鳴ってました。同じ考えでは出来ないという事なんですかね。"(-""-)"ブロック崩しはネットにサンプルあります。
諦めかけてましたが、シツッコクやりました。スマホの画面の左下にUnityのアイコンが出てきました。これだ。
しかし画面は動かない絵が表示されてます。どうして?
画面上ではボールが動いてますがね。一歩進んだかも。参考にしたサイトはクリックしてください。
上の図でSDKとJDKのパスを設定しますが、キーボード入力でなく、Browseで指定した方が間違いないようです。よく見ると/\が混じってますね。