rubyの場合と比べて、制限が多い感じです。rubyの場合では配列はあるんですが、Intでの配列を作るという感じが無いでしょう。kotlinでは配列の作り方も2種類あるようです。
配列の大きさが決められてますので、そこから外れるとエラーが起きますね。
配列の大きさを決めるという概念が無いので、配列だけを決めれば好きな要素を参照できます。最後の要素で大きさは決まるようですね。
rubyの場合と比べて、制限が多い感じです。rubyの場合では配列はあるんですが、Intでの配列を作るという感じが無いでしょう。kotlinでは配列の作り方も2種類あるようです。
配列の大きさが決められてますので、そこから外れるとエラーが起きますね。
配列の大きさを決めるという概念が無いので、配列だけを決めれば好きな要素を参照できます。最後の要素で大きさは決まるようですね。
二行目のval name = "Hanako"がないと5行目でエラーが出ました。$nameが展開されてHanakoに置き換えられてます。
REPLだとfun main(...)が要らないので、ついその気でprintでのエラーから抜け出せませんでした。rubyでも要りませんでしたからね。fun main(){}を忘れなくです。(-_-;)C言語では確か、使わなければmain()の括弧の中は要りませんでしたが、どうなんでしょうか?省略できないようです。後からやってみたらエラーになりました。
val aisatu = "Hello"と書いても良いようです。: Stringは省略可能のようです。val a = では省略してます。$を使った書き方もあります。しかも{}を使う書き方、無い書き方どちらもありです。""の内部に書かれてることを、注意ですかね。
val b: Long = a.toLong()として代入、この場合は初めて、初期化なので代入は出来るんでしょう。少し気になるのがa.toLong()>>> bと改行が無いんですが、これは自分のせいですか?"(-""-)"
valで宣言した変数には再代入が出来ません。varでなら出来ます。初期値を与えない宣言は出来ないようです。val b:Intだけだとエラーになりました。
同じようなものがpython、rubyにもあります。終了の仕方が思ったとおり行ってません。pythonは表示通りで終了できます。Cnrl+Zで出来てます。kotlincはquitで終了と表示されてますが、何か違うんでしょうか?エラーが出てます。irbについてもCnrl+Cでquitが出てますか?最後はバッチジョブを終了しますか?
Cntl+Cでどんな場合も終了できる。ですかね?"(-""-)"
by lazyとかが入ってきました。"(-""-)"rubyのように最後の評価がreturnするように見えますね。
実行結果はOKのようです。(^^)/
tailrecは末尾再帰を表す修飾子なそうです。"(-""-)"。gcd、gにはprivateが付いているのでこのクラス以外からはアクセスできない、という事らしいです。"(-""-)"。でも普通、クラスのメソッドはクラス以外からは呼ばないでしょう。gcdは有るかもしれません?
短いスクリプトの場合はこの方がデバッグ画面も変わりませんから、見やすいように思います。クラスの定義だけとmainを含んだファイルのアイコンが違います。それと上の場合はFiBu.ktでファイルを作ったんですが、実行の名称はFibuKtとなってることが気になります。それと最初の1文字が大文字になるようです。"(-""-)"
前にFizzBuzzをテストしたときにfbが別のところでも定義されてるというエラーが起きました。クラスのメンバにしてしまえばクラス意外とは区別されるようです。なので同じfbでもエラーにはなりません。クラスの定義には実行のmainは含めることが出来ないようです。同じファイルでもクラスの外であれば、出来るのかもしれません。
requireはエラーを起こして、終了するんですね。自分的には面白くないですが。"(-""-)"
クラスの定義と実行のスクリプトを分けてみました。多分ですが、一緒でも問題ないと思います。rubyだと別に定義してあれば、requireしないといけないと思います。requireの意味合いがかなり違うようです。"(-""-)"
「Kotlinスタートブック」3章からRaitionalクラスをREPL(対話型評価環境)でやってますが、その都度入力しないといけないので、intelliJ IDEAでやってみます。
FizzBuzz.ktとFb.ktは内容は同じです。するとどうもfbが二個定義されてるためと思われるエラーが出ます。mainについては出ないようです。
なのでFb.ktの方のfun fbをfun fbbとするとエラーは解消します。その代わりFunction ”fbb" is never usedと注意が出ます。
Fb.ktの方のmainも直します。するとエラーは出ません。つまりsrcに含まれる関数はお互いが独立してない。例えばrubyの場合だとrequireしないと駄目ですが、そうでは無いようです。mainは独立してるんですね。
上の図の上半分はドスプロンプトでkotlinを実行した様子。二段階になってます。最初はjarファイルを作る。次にjavaで実行する。kotlinでは直接は実行できないようです。
上の図はinteliJ IDEAでHelloWorld.ktを実行しました。こちらでは直接実行できる感じに見えます。ドスプロンプトで実行した環境と違います。暫くは「Kotlinスタートブック」を参考にやっていきます。後半ではAndroid Studioにも触れてますが、Versionは2です。かなり違うようですので、どの程度やれるか?です。最新版はVersion 3のようですからね。Version3はVersion2で書かれてても、通用するのが本当だとは思います。