goo blog サービス終了のお知らせ 

新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Scalaで省略できるthisはどれか?

2023-02-23 10:21:44 | Scala

10行目で、iを使ってました。使っていない宣言があると指摘。どうすれば良いんですか?電球の指示に従うと、"_"を使うようです。

 紫色のx,y,z,rValに付いているthisを取ってみました。それは問題なく取れるようです。あとprintfに付いているSystem.out.も大丈夫そうです。しかし、斜体フォントに変わりました。なんか意味有るんでねすかね?それ以外のthisは今のとこ取ってみてません。

Scalaではifも式のようです。真の場合でも、偽の場合でも文が一個だと{}は省略できるみたいです。


Hashtable改めて、使ってみました。が…。

2023-02-21 11:37:49 | Scala

 一応msg.put、msg.getは使えているみたいですが、よく分からないのが、例えばmsg.put("nisuti","2つの数字は")とかやると駄目なんですね。もしかしたら、登録できるかもしれませんが、”nisuti"を”monument"(提案あり)変えたら、うまく行ったようです。thisだらけですが、省略できないんですかね。


「石取りゲーム」を変更で「三山崩しゲーム」に出来るかな?其の2。作戦なし。

2023-02-19 22:27:44 | Scala

 Mainはほぼ変更なし。msg.putの使い方分からず。石の山を3個にしました。25行目から27行目は、デバッグで一行から変更。一行でOKです。24行目Whileの条件も変わります。

def evalは乱数を使って取る山と数を合うまで繰り返します。乱数の範囲指定が間違っていて、暫く悩んでました。勝つための演算はネタ本にはありましたが、省略。

勝つための演算は省略してますので、勝てるチャンスはあります。最後に取ったほうが勝ちか、負けはMainの29行目だと思います。

追記)

 コードをWPに貼り付けてみました。


「石取りゲーム」を変更で「三山崩しゲーム」に出来るかな?其の1。

2023-02-18 18:41:54 | Scala

 cametan_42さんのブログから、javaからScalaに変更しました。それのうち、def eval、パソコンの手を決めるとこですが、単純に乱数で決めて、単純化しました。これを変更してみようかと、思ってます。その他は今のとこ同じです。Main.javaも同じ。


Scalaで二次元のArrayとListを使ってみる。

2023-02-17 09:29:12 | Scala

上はネットから拾ったものを、例によって、Scala に変えたものです。普通の二次元配列のプリントです。

それに配列の集計を足します。

配列.sumを使ってみますが、相変わらず、集計部分はvar goukeiを使ってます。

一旦Arrayを諦めて、Listにしてみます。するとflattenが使えて、一次元のListに変わりますので、8行目のようにnum.sumと書けますね。後は、ArrayをListに変えることが出来れば、解決ですね。

追加)

 ArrayをListに変えてみたんですが、Array(...).toListを入れ子にして、でも、sum(.....)のエラーが出ます。Array(...).toListをしないで、flattenをしてみたら、5行目のように、うまく行きました。6行目の出力も良いようです。肝はflattenでした。


ScalaのArrayやListのsumが使えるのか?使えないのか?

2023-02-15 14:15:26 | Scala

makenumbersは文字列を返します。

上の22行目で、下の図の上から4行目のListに見える出力をしてます。

Listであれば、上の38の様に書けるはず。22行目のように不明のエラーが出ます。

 makenumbersを中身はIntでListを返す、関数とします。で、解決しましたが、下のように「外側のブロックは冗長です」が、出ました。これが分かりません。

上の図で、27行目から30行目でnijigenの合計を出してますが、var ansを使わない方法って有るんですかね。Scalaは型チェックされるので、分からないエラーに遭ったら、調べることが大事かも。ですね。makenumbersでしばらく悩みました。(笑)


Scala breakを使ってみました。

2023-02-13 11:05:08 | Scala

breakは使ってみましたが、関数を使ってません。var sumを使わないで、集計する方法があるんですかね?

計算は、最初は1、二番目は1,2、三番目は1,2,3、四番目は1,2,3,4。四番目まで足すと20です。10番目まで足すと220になります。


石取りゲーム、cametan_42さんのブログから。其の4。勝つ方法わかったかも。

2023-02-10 21:28:13 | Scala

多分先手必勝かも。最初に2個取ります。自分が取って残り5個になれば、勝ちです。

13行目の条件をひっくり返しました。するとreturnが必要なくなりました。breakの使い方が、他の言語と違うようです。

Hashtableにjava.utilをつけないと、ワーニングが出ました。もしかしたら、Env.scalaに原因があったかもしれません。

 


石取りゲーム、cametan_42さんのブログから。其の3。returnは必要な場合もあるようです。

2023-02-09 20:00:24 | Scala

上はもともと、19行目。return thisとなってます。

 returnを取ります。するとthisが意味を持たない感じで、薄い文字になります。多分ですが、18行目のifは抜けますが、while (true)から抜けられません。もともとjavaではbreakだったのですが、Scalaのbreakとは違うんですかね。実際はjavaのもののような気もしますが。

有効な入力のはず3が、上のように、再入力を命じられます。

 コンピュータに勝つ方法がわかりません。現在の石の数が5で自分の番が来ると負けることはわかりました。前に勝負がついたときの表示がおかしいと思ってました。本来は27行目のようにprintfだったのをprintに変えて、戻し忘れです。


石取りゲーム、cametan_42さんのブログから、続きNo2。

2023-02-08 19:58:44 | Scala

 cametan_42さんのヒントから、breakでなく、19行目return thisに変えてみました。すると良いようです。18行目は多分、ゲームが正常に動く条件のようです。

上の図のように、取れない石を入力すると、while (true)のループから抜けられないようです。

 

def readをjava版と同じように直してみました。

18行で条件が合うと、return thisします。23行のthisでリターンする時もあったと思います。

 Scalaのbreakはjavaのbreakと違うんんですかね?最後はコンピュータが勝つようですが、表示がおかしい?cametan_42さんのブログをもう一度見てみますが、全体の構造が理解できてません。(笑)


石取りゲーム。cametan_42さんのブログから。

2023-02-07 10:46:17 | Scala

 cametan_42さんのブログに石取りゲームのjavaの回答があります。javaと聞くと、Scala で出来るんでない?と思ってしまいます。置き換えることだけ考えます。コードの内容については、チョット自分には思いつかない感じです。

 cametan_42さんのブログにやり方が詳しく有るので、それで良いのですが、自分はIDEが無いと駄目なのでintellij IDEAを使ってみます。実行はMainに変えてます。普通にやるとそうなります。Env.javaは全くその通りです。上のjavaのコードをScalaのプロジェクトへ貼るわけですが、今回は多少手こずりました。やった結果がしたです。

 なんとかコンパイルは通ったのですが、下の実行時のエラーが出ます。Scalaは基本breakは使わないようにとのことですが、javaみたいに使っているとこがまずいのかもしれません。式が複雑で、意味もわかりませんしね。(笑)入力の有効性をチェックしているのですかね。breakしないときは、this多分。でもthis.xやthis.numやthis.ternあるんでそれをまとめて返している。breakの時は返さないんですか?

ここで一旦ギブアップ。

 

 

 

 


「Creative Scala日本語版」寄り道止めました。

2023-01-13 21:21:05 | Scala

「Creative Scala」はグラフィックでScalaを学びましょう、という事らしかったのですが、サイトの通りやったつもりでも、sbtでエラーになります。原因理解できずで、中断です。Scalaコップ本でもあまりGraphicsに関しては無いようです。多分ですがjavaの通りだということなのかもしれません。

上はネットから拾ったもので、簡単な図形を描くjavaのスクリプトです。それをScalaのプロジェクトのsrcに貼り付けてみると、javaからScalaへ変換されます。その逆は出来るのかというと、出来ません。

一箇所だけエラーになりましたので、コメントアウトしました。実行結果はどちらも同じです。pygameの方がわかりやすいかも。


「Creative Scala日本語版」寄り道してました。其の2。UbuntuのIntelliJ IDEAでも出来ました。

2023-01-12 10:39:08 | Scala

IDEの全体では小さすぎますので、下はエディタのみ。

下は実行画面ですが、Windowsと微妙に違いました。本が書かれたときが4年ほど前ですので、Bundle版のScalaも2018年の物を使いました。これはG3、UbuntuからのUpです。

Galleria3、自分での通称G3、ドスパラから中古で買ったもので、Windows10 Homeです。一旦Ubuntuだけになってましたが、Windows10をインストール出来ましたので、マルチブートにしました。Windowsの起動方法とUbuntuの起動方法が違うので、今はUbuntuの起動方法grubになってますので、Windowsだけに戻すときが結構面倒だったかもしれません。アプリを入れて置かなければ、Windowsの再インストールでいいように思いますが。

G2がアプリを入れすぎて、メールの削除に時間がかかりすぎるので、G3は出来るだけ詰め込まないで、サクサク動くようにしておいたほうがいいのかもしれません。


「Creative Scala日本語版」寄り道してました。

2023-01-11 20:30:15 | Scala

IDEの全体では小さいのでスクリプト部分は下。

Creative Scara日本語版」では、画像を描くから入門するようですが、結構簡単ではないようです。やり方もいろいろ書いてますが、自分が成功したらしいのはIntelliJ IDEAのScala BUNDLE版でしかも、古めの物2017年版だったか?で成功にこぎつけました。Windows10のIntellij IDEA

です。

コップ本もやり始めたばかりですが、Pythonのpygameの感じとどうなんだろうか?出だしで簡単ではない、そんな感じです。せっかく動きだしたので、もう少し読んでみようか?