カテゴリー
Scala

Swapの不思議、前回から、すこし前進。

 

今回は、def swapArrayを少し変えて、引数を変更しないで、それのクローンを作ってそれを変えて、返す。様にしたら、違和感がなくなった。

カテゴリー
Scala

ScalaでSwapの例題があったので、やってみましたが、不可解です。

val aryとval cngary違う変数みたいに見えますが、同じ場所を指している、と思えますが何故?

関数の呼び方を変えても、結果は同じです。cngaryはaryの別名(アリアス)みたい。自分的にはval cngary = aryだったら分かるんですがね。

 

カテゴリー
Scala

cametan_42さんの問題をVBをからScalaへ、変えてみてます。breakを取ってみました。

 

 breakを取ってみました。終了判定用の変数、カウンタ用の変数の追加とwhile文を追加で、不可能では無いようです。Scalaのforは基本、途中で止めるものでは無いとかです。

アノテーションは省略でしたが、ほぼ自動で追加できました。関数では省略できないようです。

カテゴリー
Scala

Scalaでcametan_42さんの問題をVBから置き換えてみます。

substringはVBとScalaで、パラメータの使い方が違うみたいです。

whileの使い方が独特と感じますが…。

forが三重になってますし、breakも使ってますので、直してみたいところですね。

カテゴリー
Scala

Scalaで文字列から文字列を削除してみます。トランプの例題を使います。

ワーニングはmaxが5以外の値を取らない、で出てます。

関数の引数であるallcardsは変更できないようです。var allcardを変更して、返してます。whileが少し面倒。

allcardsは、変わらないので、val ansに答えを入れてます。

答えをプリントが残ってます。VBでやった通りで出来ると思います。

カテゴリー
Scala

Scala、二重ループはどう書く?

 5行目と14行目に注目です。配列の添字が1から始まるとか、0から始まるとか、最後の添字は配列の大きさ-1とか関係なくなってますね。13行目から18行目は、Scala独特ですかね?

前の課題のトランプの作成と同じ機能です。

カテゴリー
C#、VBなど

cametan_42さんの問題、入力のチェック入れてみました。

 

 今回直したのは、上のTemotoCardInputのみ。エラーデータだとallcardが変わらないので、それで見つけます。エラーでない状態から始めないといけないので、fflagを使います。

カテゴリー
C#、VBなど

cametan_42さんの問題でもう少しやってみようか?

自分は出来てから、分けるのが好きなので、FunctionとSubで分けてみます。

 VBの場合、ByValとかByRefとか関数の引数に付きますが、少しあやふやですが、単一の変数以外であれば、例えば配列などの場合は、参照渡しになるようだ、と思ってます。この辺も解釈がいろいろあって、自分の考えもはっきりしませんが、アドレスのコピーが渡されると解釈する方も居るようです。なので値渡し以外無い、とか。

 一応動いたので、良いとは思いますが。(笑)

 入力データのチェックは、単に入力されたものが、allcardになければエラーで、再入力する、だけで良いように思います。

カテゴリー
C#、VBなど

cametan_42さんの問題、今度は良いかも?

トランプの数を簡単のために、1から5にします。

 エラーチェックを入れると結構複雑になるようなので、取り敢えずは省略。一度入力したらそれを以降無効にするのが、面倒そう。でもないか?文字列にない時はエラーでいけますね。出力が思った以上面倒になったのは、発想が悪いせいかも。

カテゴリー
C#、VBなど

cametan_42さんの宿題で、自分の回答に間違いがありました。

 52行目から54行目です。今はトランプの各柄(スペードなど)があれば良いのですが、手持ちのカードの枚数が多くて、トランプの文字列データが消されるものが多くて、例えばスペードのカードが全部、手持ちだった場合を考えてませんね。やっぱり、なにかある(笑)

 

inserted by FC2 system