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

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

Kotlinで遊んでました。SAM変換分かりません。

2018-10-20 22:42:28 | kotlin

Javaのインターフェイスでmethodを一つしか持たないものはSAMインターフェイスと呼ばれ、ラムダ式で置き換えられるようになっている。それをSAM変換と呼ぶ、ということですが、分かりません。"(-""-)"

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。オブジェクト式

2018-10-20 19:26:58 | kotlin

 interfaceでH_Bucketを定義します。

object式でクラスを実装。出来るんですね。createBucket()でクラスのインスタンスを作れる。

テストは同じです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。型キャスト

2018-10-20 10:13:22 | kotlin

StudentクラスのobjectをPersonクラスのobjectとして扱うことができる。ということですかね。aPersonは元々はStudentのobjectなのでStudentのobjectとして扱える。

aPersonはIntとしては扱えません。エラーが起きるところですが、as?を使えばnullを返してくれます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。スマートキャスト

2018-10-19 09:31:02 | kotlin

objがStringだったらobjをキャストする必要がないのでobj.lengthと書ける。当然といえば当然。それ以外であればnullを返しますが、printlnするとnullという文字列でした。だったらそれのlengthは出来る?getLen(12345).toString()とは書けましたが、結果は同じnullでした。.lengthとは書けないようです。純粋な文字列ではない?"(-""-)"

getLenは文字列であれば、Intを返すので文字列と判断できます。nullであればそれ以外です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。interface続き

2018-10-18 00:00:38 | kotlin

BucketをH_をつけてだぶらないように定義。interfaceはクラスのプロトタイプみたいなもんですかね?

H_Bucketで定義したものは全てoverrideをつけて、実装します。すべて実装しないうちはエラー表示されます。クラス名にアンダーの赤波が付きます。

b1は容量7、b2は4です。b1を一杯にして、b2へ移すと、b1は3残り、b2は4入ってます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。今回はKotlinスタートブックから

2018-10-13 19:08:32 | kotlin

objectを使って、classのようなものをmainに閉じ込めてました。この宣言部分をmainの外に出してもエラーです。VBとかならmainの外で宣言すればglobalなものになりそうですが、そうではないようですね。このobjectの使い方をobject式と呼んでるようです。

今までの知識では、classとしてmainの外で宣言するのが、普通のやり方でしょう。と思います。上のようにです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。インターフェイス

2018-10-12 22:14:15 | kotlin

上の図はKotlinのマニュアルからです。クラスに似ているがそれ自体では使えない、abstractと似ているが違うとこもあるようです。まあその程度で止めておきます。マニュアルにはもっと突っ込んだサンプルもあります。「はじめてのAndroidプログラミング」の例があまりにも簡単だったので。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。クラスの派生例。

2018-10-11 17:11:31 | kotlin

 class Dogは前の例で定義しているので、使える、ことに注意。多分ですが、mainは各々が独立ですので、ダブりは無い。と言うことはmainの中にclassを持ってくれば同じものでも定義できる、と思います。実験したら駄目でした。classはmainの外に置くのが普通のようです。

 class HouseCatとclass Catの継承の仕方に注意ですね。親classにあるvar nameについては派生クラスではvar付かない。ことに注意ですかね。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。クラスの例。

2018-10-11 11:13:01 | kotlin

class Dogとclass Catを例題にしてます。気づいたのが、classはmainの外でもOK 。classを定義するとき、クラスの名前の直後()があるかないかで多少違いがある。例えば val adog =Dog("Pochi")のように一般的に描く場合は、直後に()を書くタイプでないといけないようです。init{}でイニシャライザを書けます。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。ラムダ式と関数型を引数に持つ関数。

2018-10-11 09:43:13 | kotlin

注目はdoLambdaです。それを少し変形したのがdoLambdaSampleです。簡単に説明すると、関数自体では処理が決まらない。呼び出すときに処理は決まる。この場合はこうすることが適当かは問題あるかもしれませんが。この辺が難しい。

「はじめてのAndroidプログラミング」の説明では、関数型の引数のメリットは、実行時に処理の内容を決定できるということです。上と同じことですかね?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ラムダ式と関数型

2018-10-09 08:42:41 | kotlin

「はじめてのAndroidプログラミング」によれば、{}の中をラムダ式と言い、この時の変数を関数型というようです。var、valどちらでも良いようですが。変数の定義は型を宣言することもできるので、この場合もできるようです。例えばvar minus:(Int, Int) -> Int = {x, y -> x - y}とも書けるようです。定義自体は変数の方かラムダ式の方か、どちらかにあれば良いようです。暗黙の引数itを使う場合は、変数の定義に引数の型と関数の型を書いてるようです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Cygwin64とUbuntu18.04で遊んでました。

2018-10-09 08:13:11 | kotlin

 結果は満足できないものになりました。Cygwin64はGnomeというものが動いたんですが、日本語入力が出来ませんでしたし、Ubuntuは結構前にはやってみることができたんですが、今回はWindowを出すこともできませんでした。両方が少し混同したかもしれません。

 でも、多分ですが、削除は出来たんで、悪影響はないと思います、と祈ります。最悪の事態はクリーンインストールをすることです。これに関しては多分できるでしょう。

 

本来の目標はAndroidプログラミングなので、戻ります。幾らかプログラムみたいな関数の書き方です。多分ですが、returnは省略できると思います。最後の値が、returnされるのが今風なんで。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。whileとdo-while

2018-09-30 14:09:21 | kotlin

次回からはKotlinのコレクションです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。範囲式を使ったfor文。downToの場合。

2018-09-30 11:52:51 | kotlin

for( i in 1..4)はOKですが、for(i in 4..1)はエラーにはなりませんが、無視されるようです。"(-""-)"なんか反応してほしい。書き方が別にありますとか?使えませんとか?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Kotlinで遊んでました。範囲式を使ったfor文

2018-09-30 11:15:24 | kotlin

4行目のforがエラーになります。どうしてなんですかね?もしかしたら別の書き方がある、ということですかね。

 

確かに、別の書き方があるようです。どっちでも動くようには出来ないんですかね?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする