X



Kotlin 4
■ このスレッドは過去ログ倉庫に格納されています
0002デフォルトの名無しさん
垢版 |
2018/07/17(火) 18:34:50.92ID:ZWBv+70m
0006デフォルトの名無しさん
垢版 |
2018/07/18(水) 15:25:15.23ID:4EnTiz3/
class A{
var a=A //ここでStackOverFlowになる
fun foo(a:A){this.a=a}
}
無限ループしてる感じになっているのかな?
どう実現すればいいですか?
0009デフォルトの名無しさん
垢版 |
2018/07/18(水) 19:09:03.71ID:Su6NE01F
探索のnodeを作っていまして
aのところに親ノード入れようとしているんですが、それがうまく行かなくて
0011デフォルトの名無しさん
垢版 |
2018/07/18(水) 19:15:14.93ID:FXmaHpqV
それなら普通に
var a: A? = null
で初期化しとけよ

どうしてもインスタンスを入れたいなら
var a = A()
でもいいけどさ

aにはAのインスタンスを入れなくちゃいけないのに、なんでクラスそのものを入れようとしてるんだ
0012デフォルトの名無しさん
垢版 |
2018/07/18(水) 19:27:02.59ID:OIFrVuMx
それと質問するときは差し支え無い範囲で実際のコードそのまんまの方がいいよ

class Node {
var parent: Node? = null
}

とか書いてあると何がしたいのか読み取れるけど、
Aとかaじゃ何が何やらわからない
0013デフォルトの名無しさん
垢版 |
2018/07/18(水) 20:11:49.59ID:3T+bsJq5
>>6
それ var a = A って書いてる?
コンパイルエラーにならない?
0014デフォルトの名無しさん
垢版 |
2018/07/18(水) 20:27:27.20ID:psgNFjkz
あー、var a = A()になってそうだな
それなら無限ループになるわ
対策方法は上に書いてあるやつでいいけど
0015デフォルトの名無しさん
垢版 |
2018/07/18(水) 20:30:22.18ID:3T+bsJq5
よくわからんが class A(val a: A) じゃいかんのか?
0016デフォルトの名無しさん
垢版 |
2018/07/18(水) 20:32:19.89ID:3T+bsJq5
あ、だめか。class A(val a: A?) じゃないと永遠に初期化不能かw
0017デフォルトの名無しさん
垢版 |
2018/07/18(水) 22:44:24.79ID:3bDqFXKr
これおもしろいな、aをnull許容型にしないとインスタンスできないだろ
Javaだとそんなこと考えることもなかった
0018デフォルトの名無しさん
垢版 |
2018/07/19(木) 00:32:31.04ID:neesrQsq
試してないけど、nullobject用の派生クラスを用意して、nullobjectのaにはthis代入すりゃいいんじゃない?
0019デフォルトの名無しさん
垢版 |
2018/07/19(木) 01:00:01.34ID:CV+7JOtj
>>12で出来ました
ご迷惑おかけしました。ありがとうございます
他の言語だと、自動でnullが代入されているから、詰まってしまった
0020デフォルトの名無しさん
垢版 |
2018/07/19(木) 01:09:56.19ID:JUgZbHsB
これはと思い階乗計算してみたが、微妙…orz

class A(n : Int, f : Int = 0) {
. val a = if (n > 0) ? A(n - 1, f * n) : else { println(f); null }
}
0024デフォルトの名無しさん
垢版 |
2018/07/19(木) 09:25:33.22ID:1WhS78Yi
>>19
そこ(Nullableと非Nullable)がことりんの最大の特徴だから、ぜひちゃんと理解して使いこなしてあげてね。
0025デフォルトの名無しさん
垢版 |
2018/07/19(木) 21:01:30.52ID:ovyKVv/0
intellij入れたんだけど
runしようとするとmain classを入力してって言われるんだけど
関数だけでrunできないですか?
0027デフォルトの名無しさん
垢版 |
2018/07/19(木) 22:05:47.90ID:U09DDbAL
>>25
fun main(args: Array<String>) {
// 実行したいコード
}

これが書いてある実行用のファイル作ってrunすれば動く
0028デフォルトの名無しさん
垢版 |
2018/07/19(木) 22:51:52.90ID:ovyKVv/0
>>26
テスト書かなきゃだめなんですね

>>27
そうしてるんですがNo main class specified 言われるんですよ

main classってなんや
static void main …のあのおまじないですか?
0030デフォルトの名無しさん
垢版 |
2018/07/20(金) 01:12:02.79ID:uIqPJHG1
fun main(args: Array<String>) { } をクラスの外に作った瞬間にその行の左に緑の三角が表示されて、そこから実行できるね
クラスの定義は無くてもいいけど、クラスの中じゃダメだ
0031デフォルトの名無しさん
垢版 |
2018/07/20(金) 06:18:13.10ID:vo0BuOhE
>>27のやり方で普通に動いたよ。
左側のProjectペインから、その実行したいktファイルを右クリックして、そこからRunしてもだめ?
もしくは上の方にあるRun configurationを一回削除してから同じことをしてみるとか。
0033デフォルトの名無しさん
垢版 |
2018/07/20(金) 09:18:38.44ID:+BuQOMxB
>>25
状況がよくわからないからそのエラーが出た時のスクリーンショット取って見せて。ソースが表示されてる状態のな。
0036デフォルトの名無しさん
垢版 |
2018/07/20(金) 12:34:08.35ID:+BuQOMxB
それだけはお許しください
003828
垢版 |
2018/07/20(金) 22:04:55.35ID:1Jm4m9CR
みなさん回答ありがとうございました

新しいプロジェクトでやったらできました。
おそらく原因はNewでファイルを作るときにkotlin scriptを選んでしまったためだと思われます

srcディレクトリ直下にkotlin file/class
でファイルを作ったら実行できました。
0042デフォルトの名無しさん
垢版 |
2018/07/21(土) 00:56:25.52ID:fcZsLQAf
今更、LinuxベースじゃないOS作ったから使えよ!って言われて流行ると思う?
0043デフォルトの名無しさん
垢版 |
2018/07/21(土) 02:48:12.63ID:5tjqiit9
Kotlin は今はとにかく JavaVM で動くコードを出すコンパイラで Android 開発で使って貰って
世界中に広めてある程度定着させれば良い。その隙にネイティブとか新OSの実行環境用コードを
出すコンパイラを作ってくれれば問題なし。そして Java は死亡して Kotlin は生き残る。
0044デフォルトの名無しさん
垢版 |
2018/07/21(土) 03:41:06.56ID:/p8fRGKp
JavaVMなどの他の環境の寄生をやめるなら基本的なクラスライブラリはどうするんだ?
コンパイラだけじゃダメじゃね。javaみたいなコレクションフレームワークやらHttpやソケットライブラリあたりも標準で用意してくれないとね。というか寄生やめるならUIフレームワークも必要じゃねぇ?無理だな。
サーバーサイドならいらんが。
0045デフォルトの名無しさん
垢版 |
2018/07/21(土) 04:12:26.67ID:/p8fRGKp
ごめん。寄生やめるって話じゃなくて今はとりあえずandroidに寄生してその間に広めてその後は他の寄生先見つけりゃいいって話しかな?
0046デフォルトの名無しさん
垢版 |
2018/07/21(土) 05:31:45.74ID:5tjqiit9
寄生しても良いし、根底から全部作っても良いが、とにかく生き延びる率は非常に高いと思う。

まあでもネイティブでライブラリ全部作るとしてもそんなに時間掛からないんじゃないかな。
問題はどういうやつを作るかだと思う。
0047デフォルトの名無しさん
垢版 |
2018/07/21(土) 07:39:28.20ID:VkZ+bXk1
Kotlin良い言語だからもったいないよな
というか新OSに入れ替わるとしても、既存のAndroidアプリ資産を無視するわけがないから何かしらの互換は保たれると思うけど
0048デフォルトの名無しさん
垢版 |
2018/07/21(土) 10:59:13.01ID:t4jiwmBJ
JavaFXをKotlinで拾ってくれないかな?
OpenJDK+OpenJFX+Kotlinでまとまってくれれば
みんな幸せ
0049デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:41:25.99ID:y3BqVxSU
>>40
対応言語にKotlinじゃなくてSwiftが入っているというのが、危機感を刺激される。
>>48
ぜひそうなって欲しい。
0051デフォルトの名無しさん
垢版 |
2018/07/21(土) 16:53:29.87ID:46p4VUdt
Fuchsiaが普及するとしてもその頃にはKotlin/Nativeも出来上がってるでしょ
ただ、Googleの進め方を見るにKotlin/Dartの実装も検討した方がいい気はする
0053デフォルトの名無しさん
垢版 |
2018/07/21(土) 17:08:37.75ID:/p8fRGKp
まぁ、でもnull safetyを存分に味わうにはkotlinが標準クラスライブラリを用意してくれるのがいいんだけどね。
0057デフォルトの名無しさん
垢版 |
2018/07/22(日) 06:57:39.00ID:i3g7mAqR
>>51
現状でも、言語仕様を一つ修正するのにJVM, JS, Nativeの3通りの変更が必要になる。
この上、Dartのサポートとか、なんという無茶振り。
0061デフォルトの名無しさん
垢版 |
2018/07/23(月) 02:10:39.62ID:CBB4e6ta
できるそうだがやったことがない・・・やればいいんだなw
0062デフォルトの名無しさん
垢版 |
2018/07/23(月) 06:25:10.31ID:Ot4A38Sz
遊びで触ったことあるけど、メリットを何も感じなかった。
特に他のJSライブラリを使うのがえらく面倒くさい。
0063デフォルトの名無しさん
垢版 |
2018/07/23(月) 07:32:27.66ID:9Edc2hOd
サーバーサイドでKotlin使ってたら有用な面もある
計算やチェック処理なんかをクライアント側と共用出来るから
0065デフォルトの名無しさん
垢版 |
2018/07/23(月) 10:28:50.79ID:SDK/XMQD
>>40
>C言語、C++、Dart、Go、Python、Rust、シェルスクリプト、Swift、TypeScript

この中で生産性の良く主流になりそうな言語ってどれだろう?
PythonかSwiftくらい?
0067デフォルトの名無しさん
垢版 |
2018/07/23(月) 12:16:53.60ID:dqTrBb4W
それ最後に書いてあるよ。

暑さには要注意だ。脳が暖まり過ぎると段々おかしくなる。
0069デフォルトの名無しさん
垢版 |
2018/07/23(月) 23:41:47.31ID:TlqhU3AK
入れたときの型そのままで取り出せる汎用的なmap的なもんって実装できないかな
0073デフォルトの名無しさん
垢版 |
2018/07/24(火) 06:13:07.75ID:43FBDpPt
>>72
確かにJavaに似てるけど、あれは普通のJSの拡張みたいなもんだから使いやすい、というか既にめっちゃ使われてる
0076デフォルトの名無しさん
垢版 |
2018/07/24(火) 07:40:56.91ID:rJ60Fij8
TSからJS呼ぶときに戻り値の型意識しなきゃいけないことにイラつく感覚がKotlinからJava呼ぶときにnull意識しなきゃいけないときにイラつく感覚と似ている
0079デフォルトの名無しさん
垢版 |
2018/07/24(火) 10:58:03.97ID:HALI/+e7
null安全特有のバグが入ったり
null安全のためにコードが長くなったりで
あんまメリットない気がしてきた
0083デフォルトの名無しさん
垢版 |
2018/07/24(火) 11:56:29.41ID:dd1bPMMo
>>69だけどkotlinだと無理っぽいな
arrow-ktでlistっぽいのならあったけど
scalaだとshapelessってライブラリで実現してるらしい
0084デフォルトの名無しさん
垢版 |
2018/07/24(火) 12:01:17.61ID:GyqBpo0D
>>80
Oracle版JDKの有償化な
そのためにOracle自身もOpenJDKに力入れてきたんだから特に問題ない(KotlinもJavaも)
0087デフォルトの名無しさん
垢版 |
2018/07/24(火) 12:37:31.12ID:GyqBpo0D
>>69 >>83
どういうの使用イメージを望んでるのかよく分からないので
コンパイル不可で構わないから使う側の疑似コードを書いてみてほしい
0088デフォルトの名無しさん
垢版 |
2018/07/24(火) 12:37:44.64ID:lb/L6e2D
JetBrainsJDKは理想だけど、さすがにそんなことやるほど体力のある会社じゃないだろ
0089デフォルトの名無しさん
垢版 |
2018/07/24(火) 12:38:02.51ID:loJnpDBw
>>79
煽るわけじゃなく、純粋に知りたいのだけど、null安全特有のバグって、どんなのがあるの?
0090デフォルトの名無しさん
垢版 |
2018/07/24(火) 12:47:46.02ID:lb/L6e2D
null安全のために記述が長くなるってのもよく分からんな
kotlinはそうならないようにかなり配慮されてると思うのだけど、もしかしていちいち全部ifでnullチェックでもしてるんじゃないの
0091デフォルトの名無しさん
垢版 |
2018/07/24(火) 13:09:50.01ID:DcwsX7CJ
>>88
そうするとGoogleのAndroidのような面倒な問題を抱える可能性があるのでは?
素直に OpenJDK 使っといた方が良いと思うのだが。
0093デフォルトの名無しさん
垢版 |
2018/07/24(火) 18:26:44.44ID:43FBDpPt
RedHatがOpenJDK11を独自にLTSするらしいから、RedHat系のディストリビューション使ってるなら大丈夫だろ
ubuntuは知らん
0094デフォルトの名無しさん
垢版 |
2018/07/24(火) 18:37:37.15ID:06VgvsWU
null安全のせいでコードが長くなるのは

・nullを返しうるメソッドだけど今回に限っては絶対にnullじゃない

ってケースで !! の2文字が増えるぐらいでは
0095デフォルトの名無しさん
垢版 |
2018/07/24(火) 18:40:45.65ID:uYKauRtK
>>93
つまりWindowsは死亡と。
0098デフォルトの名無しさん
垢版 |
2018/07/24(火) 19:06:30.65ID:/05DIiMI
>>97
GitHub見てこいよ
アレをプロダクトで安定して使えるようになるまでまだまだ先は長そうだぞ
0099デフォルトの名無しさん
垢版 |
2018/07/24(火) 19:30:50.32ID:dd1bPMMo
>>87
val map = HashMap<String, 抽象的な何か>()
map["hoge"] = "文字列"
map["fuga"] = 100

val str = map["hoge"] // :String
val num = map["fuga"] // :Int

みたいな感じで
とにかく型チェックやらキャストやらが面倒くさい
実際には自作クラスとかも突っ込みたい
0100デフォルトの名無しさん
垢版 |
2018/07/24(火) 19:54:27.68ID:K9O8BSac
試してないんで適当言うけど
Class.forName(className).kotlin.cast(value)
とかでなんとかならんの
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況