Kotlin 4
■ このスレッドは過去ログ倉庫に格納されています
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
https://kotlinlang.org
※前スレ
http://mevius.5ch.net/test/read.cgi/tech/1521401186/ class A{
var a=A //ここでStackOverFlowになる
fun foo(a:A){this.a=a}
}
無限ループしてる感じになっているのかな?
どう実現すればいいですか? >>6
何がしたいのか全く分からない。
var a = Aの部分は何をしたいの? >>6
もしnull許容型にしたくないって意図なら
lateinit var a: A
にするとか 探索のnodeを作っていまして
aのところに親ノード入れようとしているんですが、それがうまく行かなくて それなら普通に
var a: A? = null
で初期化しとけよ
どうしてもインスタンスを入れたいなら
var a = A()
でもいいけどさ
aにはAのインスタンスを入れなくちゃいけないのに、なんでクラスそのものを入れようとしてるんだ それと質問するときは差し支え無い範囲で実際のコードそのまんまの方がいいよ
class Node {
var parent: Node? = null
}
とか書いてあると何がしたいのか読み取れるけど、
Aとかaじゃ何が何やらわからない >>6
それ var a = A って書いてる?
コンパイルエラーにならない? あー、var a = A()になってそうだな
それなら無限ループになるわ
対策方法は上に書いてあるやつでいいけど よくわからんが class A(val a: A) じゃいかんのか? あ、だめか。class A(val a: A?) じゃないと永遠に初期化不能かw これおもしろいな、aをnull許容型にしないとインスタンスできないだろ
Javaだとそんなこと考えることもなかった 試してないけど、nullobject用の派生クラスを用意して、nullobjectのaにはthis代入すりゃいいんじゃない? >>12で出来ました
ご迷惑おかけしました。ありがとうございます
他の言語だと、自動でnullが代入されているから、詰まってしまった これはと思い階乗計算してみたが、微妙…orz
class A(n : Int, f : Int = 0) {
. val a = if (n > 0) ? A(n - 1, f * n) : else { println(f); null }
} >>20
おっと、いろいろ混ざった。
?と:は消して >>19
そこ(Nullableと非Nullable)がことりんの最大の特徴だから、ぜひちゃんと理解して使いこなしてあげてね。 intellij入れたんだけど
runしようとするとmain classを入力してって言われるんだけど
関数だけでrunできないですか? >>25
fun main(args: Array<String>) {
// 実行したいコード
}
これが書いてある実行用のファイル作ってrunすれば動く >>26
テスト書かなきゃだめなんですね
>>27
そうしてるんですがNo main class specified 言われるんですよ
main classってなんや
static void main …のあのおまじないですか? >>28
main関数の書いてあるエディタのタブ部分を右クリックでメニューからのRunはどう? fun main(args: Array<String>) { } をクラスの外に作った瞬間にその行の左に緑の三角が表示されて、そこから実行できるね
クラスの定義は無くてもいいけど、クラスの中じゃダメだ >>27のやり方で普通に動いたよ。
左側のProjectペインから、その実行したいktファイルを右クリックして、そこからRunしてもだめ?
もしくは上の方にあるRun configurationを一回削除してから同じことをしてみるとか。 >>27
一応確認だけど、関数名はmainになってるよね?
他の名前だとだめだよ >>25
状況がよくわからないからそのエラーが出た時のスクリーンショット取って見せて。ソースが表示されてる状態のな。 みなさん回答ありがとうございました
新しいプロジェクトでやったらできました。
おそらく原因はNewでファイルを作るときにkotlin scriptを選んでしまったためだと思われます
srcディレクトリ直下にkotlin file/class
でファイルを作ったら実行できました。 あ、そこまで頭回らんかった
kotlin 作ったやつが一番辛い案件だな 今更、LinuxベースじゃないOS作ったから使えよ!って言われて流行ると思う? Kotlin は今はとにかく JavaVM で動くコードを出すコンパイラで Android 開発で使って貰って
世界中に広めてある程度定着させれば良い。その隙にネイティブとか新OSの実行環境用コードを
出すコンパイラを作ってくれれば問題なし。そして Java は死亡して Kotlin は生き残る。 JavaVMなどの他の環境の寄生をやめるなら基本的なクラスライブラリはどうするんだ?
コンパイラだけじゃダメじゃね。javaみたいなコレクションフレームワークやらHttpやソケットライブラリあたりも標準で用意してくれないとね。というか寄生やめるならUIフレームワークも必要じゃねぇ?無理だな。
サーバーサイドならいらんが。 ごめん。寄生やめるって話じゃなくて今はとりあえずandroidに寄生してその間に広めてその後は他の寄生先見つけりゃいいって話しかな? 寄生しても良いし、根底から全部作っても良いが、とにかく生き延びる率は非常に高いと思う。
まあでもネイティブでライブラリ全部作るとしてもそんなに時間掛からないんじゃないかな。
問題はどういうやつを作るかだと思う。 Kotlin良い言語だからもったいないよな
というか新OSに入れ替わるとしても、既存のAndroidアプリ資産を無視するわけがないから何かしらの互換は保たれると思うけど JavaFXをKotlinで拾ってくれないかな?
OpenJDK+OpenJFX+Kotlinでまとまってくれれば
みんな幸せ >>40
対応言語にKotlinじゃなくてSwiftが入っているというのが、危機感を刺激される。
>>48
ぜひそうなって欲しい。 なにこれ、最近kotlin始めたばかりなのに終了かよwwww Fuchsiaが普及するとしてもその頃にはKotlin/Nativeも出来上がってるでしょ
ただ、Googleの進め方を見るにKotlin/Dartの実装も検討した方がいい気はする まぁ、でもnull safetyを存分に味わうにはkotlinが標準クラスライブラリを用意してくれるのがいいんだけどね。 >>53
これあくしろよ
ファイル周りぐらいでもやってくれ〜 >>51
現状でも、言語仕様を一つ修正するのにJVM, JS, Nativeの3通りの変更が必要になる。
この上、Dartのサポートとか、なんという無茶振り。 >>53
せめてnull safety対応generics欲しいよね。 できるそうだがやったことがない・・・やればいいんだなw 遊びで触ったことあるけど、メリットを何も感じなかった。
特に他のJSライブラリを使うのがえらく面倒くさい。 サーバーサイドでKotlin使ってたら有用な面もある
計算やチェック処理なんかをクライアント側と共用出来るから JSいらんから、その分の労力をNativeに注力してくれ >>40
>C言語、C++、Dart、Go、Python、Rust、シェルスクリプト、Swift、TypeScript
この中で生産性の良く主流になりそうな言語ってどれだろう?
PythonかSwiftくらい? >>65
あとTypescriptかなあ。
Goはキモいからそこまで広がらないと思う。 それ最後に書いてあるよ。
暑さには要注意だ。脳が暖まり過ぎると段々おかしくなる。 入れたときの型そのままで取り出せる汎用的なmap的なもんって実装できないかな >>69
Anyとスマートキャスト利用するしかないだろうなあ >>66
TypescriptってC#scriptみたいな物か
何気に一番Javaに近そうねw >>72
確かにJavaに似てるけど、あれは普通のJSの拡張みたいなもんだから使いやすい、というか既にめっちゃ使われてる >>73
KotlinよりTypescriptの方が流行る? TSからJS呼ぶときに戻り値の型意識しなきゃいけないことにイラつく感覚がKotlinからJava呼ぶときにnull意識しなきゃいけないときにイラつく感覚と似ている てか、CとTypescriptとその他を比較する意味あんのか?
分野が違いすぎんだろ null安全特有のバグが入ったり
null安全のためにコードが長くなったりで
あんまメリットない気がしてきた Javaが有償化するけど、Kotlinにも影響ある? いやひょっとしたら、JetBrainsがいい感じでやってくれるかと... >>69だけどkotlinだと無理っぽいな
arrow-ktでlistっぽいのならあったけど
scalaだとshapelessってライブラリで実現してるらしい >>80
Oracle版JDKの有償化な
そのためにOracle自身もOpenJDKに力入れてきたんだから特に問題ない(KotlinもJavaも) >>83
最近ちょこちょこ聞くようになった依存型がこれに使えるのね >>79
null安全が好きでないなら、動的型付言語を使ったほうが幸せになれるんじゃない? >>69 >>83
どういうの使用イメージを望んでるのかよく分からないので
コンパイル不可で構わないから使う側の疑似コードを書いてみてほしい JetBrainsJDKは理想だけど、さすがにそんなことやるほど体力のある会社じゃないだろ >>79
煽るわけじゃなく、純粋に知りたいのだけど、null安全特有のバグって、どんなのがあるの? null安全のために記述が長くなるってのもよく分からんな
kotlinはそうならないようにかなり配慮されてると思うのだけど、もしかしていちいち全部ifでnullチェックでもしてるんじゃないの >>88
そうするとGoogleのAndroidのような面倒な問題を抱える可能性があるのでは?
素直に OpenJDK 使っといた方が良いと思うのだが。 RedHatがOpenJDK11を独自にLTSするらしいから、RedHat系のディストリビューション使ってるなら大丈夫だろ
ubuntuは知らん null安全のせいでコードが長くなるのは
・nullを返しうるメソッドだけど今回に限っては絶対にnullじゃない
ってケースで !! の2文字が増えるぐらいでは >>95
これを機にWndowsServerなんてカスは滅ぼそう >>97
GitHub見てこいよ
アレをプロダクトで安定して使えるようになるまでまだまだ先は長そうだぞ >>87
val map = HashMap<String, 抽象的な何か>()
map["hoge"] = "文字列"
map["fuga"] = 100
val str = map["hoge"] // :String
val num = map["fuga"] // :Int
みたいな感じで
とにかく型チェックやらキャストやらが面倒くさい
実際には自作クラスとかも突っ込みたい 試してないんで適当言うけど
Class.forName(className).kotlin.cast(value)
とかでなんとかならんの ■ このスレッドは過去ログ倉庫に格納されています