JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
Kotlin [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
580デフォルトの名無しさん
2017/08/31(木) 23:18:11.21ID:pWykFKbQ581デフォルトの名無しさん
2017/09/01(金) 15:48:55.97ID:yBuOlbxF ギアパワーの組み合わせで性能が見れるアプリを作ってみようかと思うんだが、
どういう機能があったら嬉しいかね
単に57表記が見れるだけじゃ意味ないよねえ
どういう機能があったら嬉しいかね
単に57表記が見れるだけじゃ意味ないよねえ
582デフォルトの名無しさん
2017/09/01(金) 16:36:37.15ID:xNWoFI1L それはプログラミング言語の手法の話ではないと思うよ
そのアプリを使うであろう人たちに直接聞いてみてはいかがかな
そのアプリを使うであろう人たちに直接聞いてみてはいかがかな
583デフォルトの名無しさん
2017/09/07(木) 03:36:37.46ID:Ua+ABG0j 使う
584デフォルトの名無しさん
2017/09/07(木) 03:43:26.98ID:Ua+ABG0j ミスった
引数がIntのメソッドにByteとかShortとかつっこみたいときの賢い方法ってない?
いちいち.toInt()付けるのアホらしくて
…いっそのこと全部Intにしてしまうか
引数がIntのメソッドにByteとかShortとかつっこみたいときの賢い方法ってない?
いちいち.toInt()付けるのアホらしくて
…いっそのこと全部Intにしてしまうか
585デフォルトの名無しさん
2017/09/07(木) 07:38:14.55ID:hBpoFfSg java使えば?
586デフォルトの名無しさん
2017/09/07(木) 07:43:21.26ID:dJGmlTPD val b:Byte = 100
f(b+0)
f(b+0)
587デフォルトの名無しさん
2017/09/07(木) 18:23:41.25ID:dmOyOqaZ 「引数をとりあえずIntにして当該メソッドを呼ぶ」というメソッドを作ってそっちを使うようにする
具体的にどういうことをしたいときなのか言うと案外別アプローチあるやもしれず
具体的にどういうことをしたいときなのか言うと案外別アプローチあるやもしれず
588デフォルトの名無しさん
2017/09/07(木) 18:50:45.76ID:dJGmlTPD 拡張プロパティで短縮
val Byte.i:Int get() = toInt()
fun f(b:Int) {
println(b)
}
fun test() {
val b:Byte = 100
f(b.i)
}
val Byte.i:Int get() = toInt()
fun f(b:Int) {
println(b)
}
fun test() {
val b:Byte = 100
f(b.i)
}
589デフォルトの名無しさん
2017/09/07(木) 21:28:09.40ID:wVi6dnoF >>586は何気にbytecodeにコンパイルすると最速処理に最適化されるのではと悩む
val b:Byteはクラス型じゃなくプリミティブ型intに置換されて、+0は無意味な処理として削除される的なね
toIntoをメソッドとしてコールするようなオーバーヘッドは無いに越したことはないよねー
val b:Byteはクラス型じゃなくプリミティブ型intに置換されて、+0は無意味な処理として削除される的なね
toIntoをメソッドとしてコールするようなオーバーヘッドは無いに越したことはないよねー
590デフォルトの名無しさん
2017/09/07(木) 21:37:35.68ID:10GmZssK class MainActivity : AppCompatActivity() {
fun func(value: Int) : String {
}
}
: の前って空白をいれるべきなんでしょうか
入れないでおくべきなんでしょうか
クラスの継承の時だけ入れるべきなんでしょうか
fun func(value: Int) : String {
}
}
: の前って空白をいれるべきなんでしょうか
入れないでおくべきなんでしょうか
クラスの継承の時だけ入れるべきなんでしょうか
591デフォルトの名無しさん
2017/09/07(木) 21:52:37.07ID:La56k81V >>590
https://kotlinlang.org/docs/reference/coding-conventions.html#colon
interface Foo<out T : Any> : Bar {
fun foo(a: Int): T
}
これ以外の書き方は公式規約に則らないスタイルとなる
むろんそれを押し通してもよいが
https://kotlinlang.org/docs/reference/coding-conventions.html#colon
interface Foo<out T : Any> : Bar {
fun foo(a: Int): T
}
これ以外の書き方は公式規約に則らないスタイルとなる
むろんそれを押し通してもよいが
592デフォルトの名無しさん
2017/09/08(金) 10:15:45.38ID:IL9yY2pX 関数定義の時はコロン前の空白無しって感じか
593デフォルトの名無しさん
2017/09/09(土) 05:04:55.71ID:/lYAOhx7 >>589
それはオーバーヘッドが出ないように最適化されるのかどうかに掛かっている。
それはオーバーヘッドが出ないように最適化されるのかどうかに掛かっている。
594デフォルトの名無しさん
2017/09/09(土) 18:18:44.00ID:8E3FMuHj >>593
後から思い直したけど、メソッドfがByteクラスというクラス型を受け取る以上
val b:Byte = 100
b+0
までをプリミティブ型に最適化する超絶賢いコンパイル処理がなされても
f(100)
でintからByteへのインスタンス生成が必要だからJVM上の最小限コストにはならぬ
小賢しく汚いコードの割に最大効果が得られるわけでもないから微妙だわ
後から思い直したけど、メソッドfがByteクラスというクラス型を受け取る以上
val b:Byte = 100
b+0
までをプリミティブ型に最適化する超絶賢いコンパイル処理がなされても
f(100)
でintからByteへのインスタンス生成が必要だからJVM上の最小限コストにはならぬ
小賢しく汚いコードの割に最大効果が得られるわけでもないから微妙だわ
595デフォルトの名無しさん
2017/09/09(土) 21:51:29.93ID:fgzL7F9C >>594
f(100)と書いたならコンパイル時にインスタンス作ってコンスタントプールに入れられるから実行時の無駄はないのでは?
f(100)と書いたならコンパイル時にインスタンス作ってコンスタントプールに入れられるから実行時の無駄はないのでは?
596デフォルトの名無しさん
2017/09/09(土) 23:45:06.02ID:8E3FMuHj # メソッドfが受け取るのはByteじゃなくIntだったorz
>>595
プリミティブ型byte/int 100はコンスタントプールに乗っかるけど
クラス型Byte/Int 100はコンスタントプールには乗っからないから
メソッドf呼び出し時のint to Intのインスタンス化コストは回避できてなくね?
メソッドfが受ける型をJITやクラスローダーが書き換えないと無理ぽ
どうやったってJava相当まで最適化できないんだから
全部Intにするなり拡張プロパティ使うなり、好きなように実装して良いと思った
>>595
プリミティブ型byte/int 100はコンスタントプールに乗っかるけど
クラス型Byte/Int 100はコンスタントプールには乗っからないから
メソッドf呼び出し時のint to Intのインスタンス化コストは回避できてなくね?
メソッドfが受ける型をJITやクラスローダーが書き換えないと無理ぽ
どうやったってJava相当まで最適化できないんだから
全部Intにするなり拡張プロパティ使うなり、好きなように実装して良いと思った
597デフォルトの名無しさん
2017/09/10(日) 01:33:16.68ID:3lFSiHDa 乗らないか。じゃあダメだな。
まあでもそこまで最適化するようなコンパイラができればできるということでもあるので何とも言えんな。
それとプログラマが最適化を考慮してコード書くってのは、まるで昔のC言語のようで、かなり変な状態だとも思える。
現実問題としては効率を上げるためにはそうせざるを得ないが、本来であればそれはコンパイラがやるべき仕事であり
人間がそういうことから解放されないのはまだ技術力が足りないからだ。
まあでもそこまで最適化するようなコンパイラができればできるということでもあるので何とも言えんな。
それとプログラマが最適化を考慮してコード書くってのは、まるで昔のC言語のようで、かなり変な状態だとも思える。
現実問題としては効率を上げるためにはそうせざるを得ないが、本来であればそれはコンパイラがやるべき仕事であり
人間がそういうことから解放されないのはまだ技術力が足りないからだ。
598デフォルトの名無しさん
2017/09/10(日) 11:34:35.85ID:tQxxVHdc 100は例なだけでtoInt云々の文脈では定数でなく変数でしょ
KotlinのByte/Intはオブジェクト型が必要なとき以外はプリミティブ型になる
さらにJVMのスタック上でbyteはintサイズで置かれてる
※例えば引数の2つのbyte型の加算は「iloadでint変数として読み込み x2」「int加算」「i2bでbyte表現に切り捨て」「istoreでintとして保管」になる
なのでtoIntはバイトコードレベルではメソッドコールどころか変換命令すら無く消滅する
+0や拡張プロパティはバイトコードに残るけど多分Dalvik JITやARTが消すんじゃないかな
KotlinのByte/Intはオブジェクト型が必要なとき以外はプリミティブ型になる
さらにJVMのスタック上でbyteはintサイズで置かれてる
※例えば引数の2つのbyte型の加算は「iloadでint変数として読み込み x2」「int加算」「i2bでbyte表現に切り捨て」「istoreでintとして保管」になる
なのでtoIntはバイトコードレベルではメソッドコールどころか変換命令すら無く消滅する
+0や拡張プロパティはバイトコードに残るけど多分Dalvik JITやARTが消すんじゃないかな
599デフォルトの名無しさん
2017/09/10(日) 23:39:27.48ID:Aa/cPztt 0〜127 なら、最初から、EXE の静的データ領域に入っているから、
インスタンスも作られないから、何も考えなくてよい
インスタンスも作られないから、何も考えなくてよい
600デフォルトの名無しさん
2017/09/11(月) 01:06:11.35ID:TB0SwtSd やっぱそれなりに最適化されるのでほとんど考えなくて良いということかな
601デフォルトの名無しさん
2017/09/11(月) 07:19:36.53ID:RCvV23l8 Javaほどではないが、それなりには最適化されるから考えなくて良いよ
602デフォルトの名無しさん
2017/09/11(月) 09:40:07.36ID:vJ3AiMg+ ○次受けが多いほど退場率が早くなる。高くなる
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる
eJobgo JIET JISA で検索
優良エージェント・優良サイト
首都圏IT(PE-BANK) プログラマーズ
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる
eJobgo JIET JISA で検索
優良エージェント・優良サイト
首都圏IT(PE-BANK) プログラマーズ
603デフォルトの名無しさん
2017/09/14(木) 14:48:20.23ID:ZrYTexa1 Kotlinを使えば使うほど、Kotolinってええ言語やなと思う
サーバーサイドでも使われているようだし、この言語はやる価値があるね
サーバーサイドでも使われているようだし、この言語はやる価値があるね
604デフォルトの名無しさん
2017/09/14(木) 14:51:31.85ID:ZrYTexa1 Kotolinのデメリットって何かある?
全然見当たらないんだけど
全然見当たらないんだけど
605デフォルトの名無しさん
2017/09/14(木) 15:24:33.82ID:fvkkQJHv >>604
マクロがない
マクロがない
606デフォルトの名無しさん
2017/09/14(木) 15:35:41.46ID:EfU1+ylv607デフォルトの名無しさん
2017/09/14(木) 17:42:44.76ID:wsl9UgI1 >>606
ランタイム(kotlin.jar)が実行に必要
ランタイム(kotlin.jar)が実行に必要
608デフォルトの名無しさん
2017/09/14(木) 17:43:11.05ID:wsl9UgI1 安価間違えた、スマン
609デフォルトの名無しさん
2017/09/14(木) 17:48:14.60ID:fvkkQJHv 動的言語のメリットってないだろ
型推論あるし
型推論あるし
610デフォルトの名無しさん
2017/09/15(金) 10:44:48.01ID:VHxNrIHu >>604
javaの知識が前提
javaの知識が前提
611デフォルトの名無しさん
2017/09/15(金) 11:20:35.63ID:t0O3AeYk612デフォルトの名無しさん
2017/09/15(金) 18:58:50.23ID:Tu1mqslW613デフォルトの名無しさん
2017/09/15(金) 21:05:06.50ID:iYxiAtrq そういやJavaの知識なしの人向けの入門書はまだないのかな?
なくても流行ればその内出そうだが。
なくても流行ればその内出そうだが。
614デフォルトの名無しさん
2017/09/15(金) 21:11:43.49ID:pJQDrUz2 groovyよりは期待できるの?
615デフォルトの名無しさん
2017/09/16(土) 07:58:31.08ID:AcW1bn43 Javaって一番メジャー言語だから
情報が溢れてると思うんだが……
マイナー言語の苦しさに比べたらはるかに楽
情報が溢れてると思うんだが……
マイナー言語の苦しさに比べたらはるかに楽
616デフォルトの名無しさん
2017/09/16(土) 08:06:32.31ID:wHRqrpim Javaを既に知っている者ならそうだろうな
Javaを知らずにKotlinやると、KotlinとJavaを並行して学習することになるから面倒だって話だ
Javaを知らずにKotlinやると、KotlinとJavaを並行して学習することになるから面倒だって話だ
617デフォルトの名無しさん
2017/09/16(土) 09:13:19.33ID:dqmaxFWN kotlinはJavaのスクリプト言語みたいな立ち位置だからな(コンパイル要るけど)
Java入門が巷に溢れているがゆえにKotlin+Javaの書籍は出しにくいかもしれん
それにしたとしても時間が解決していくではあろう
Java入門が巷に溢れているがゆえにKotlin+Javaの書籍は出しにくいかもしれん
それにしたとしても時間が解決していくではあろう
618デフォルトの名無しさん
2017/09/16(土) 09:53:29.49ID:64cU0LXO Kotlinで開発してたとして、具体的にどういうときにJavaの知識が必要になるんだろう?
JVMに関してなら「言語+実行環境」だから他の言語と変わりないし
Javadocのシグネチャくらいで困ることは無さそうだし
多分、解説書く側も「何が分からないのか分からない」状態になってるんじゃないかな
JVMに関してなら「言語+実行環境」だから他の言語と変わりないし
Javadocのシグネチャくらいで困ることは無さそうだし
多分、解説書く側も「何が分からないのか分からない」状態になってるんじゃないかな
619デフォルトの名無しさん
2017/09/16(土) 10:25:55.20ID:7CqADWEJ620デフォルトの名無しさん
2017/09/16(土) 10:55:31.44ID:9wmYZqGr >>618
こういうことをJVM上でやりたいなぁって思った時に、Javaでの実装手法を調べてKotlinで読み換えるわけだろ?
その時にまずJavaの全般的な知識(文法, ライブラリ)を浅く広く手に入れる所から始まる
次に、JavaからKotlinに読み換えるために文法/ライブラリの在り様を深く理解してから適切なKotlinコードに書き下す
JavaとKotlinの生半可な知識だけでJavaコードを参考にKotlinコード書くと、汚いKotlinコードになるよね
なので、絶賛Javaを再勉強中・・・Java1.5の頃の知識で止まってるからイマドキのJavaが分からない
java.langとかNIO2とかを使ったコードをKotlinでいきなり書こうとしたら何か違う感が酷くてやめちまったよ
こういうことをJVM上でやりたいなぁって思った時に、Javaでの実装手法を調べてKotlinで読み換えるわけだろ?
その時にまずJavaの全般的な知識(文法, ライブラリ)を浅く広く手に入れる所から始まる
次に、JavaからKotlinに読み換えるために文法/ライブラリの在り様を深く理解してから適切なKotlinコードに書き下す
JavaとKotlinの生半可な知識だけでJavaコードを参考にKotlinコード書くと、汚いKotlinコードになるよね
なので、絶賛Javaを再勉強中・・・Java1.5の頃の知識で止まってるからイマドキのJavaが分からない
java.langとかNIO2とかを使ったコードをKotlinでいきなり書こうとしたら何か違う感が酷くてやめちまったよ
621デフォルトの名無しさん
2017/09/16(土) 11:21:42.95ID:QlT8cqjN 他の言語を知ってれば要はリファレンスとjava特有の注意事項があればいいと思うの。
文字列組み立てにはStringBuilder使えみたいなの。
そういうの無い?
文字列組み立てにはStringBuilder使えみたいなの。
そういうの無い?
622デフォルトの名無しさん
2017/09/16(土) 11:42:24.85ID:zsfdrVgC android studioってkotlinのプロジェクトにjavaのコードを貼り付けたらkotlinに変換してくれる神機能があるから
泥開発する時にネットで拾ったjavaのコードをペタペタコピペプログラミングするだけでも勉強になる
javaもkotlinも知識皆無の状態でkotlinで泥アプリ開発に取り組んだら見様見真似で簡単なアプリ作れた
ある程度コピペしてたらjavaのこの書き方はkotlinではこう書きそうっていうのがなんとなく察せてくるからandroid studioの補完を頼りに写経したりする
javaも知らないけど新しく言語の知識学ぶなんて面倒くさいからヤダ!知識皆無だけどすぐ何か作りたい!hello wordとか練習問題みたいなの書いても面白くないからモチベーションわかない!すぐ作りたい物作りたい!って場合は
ネットのサンプルと強力なIDEの支援を頼りにコピペ写経するのが効率よさそう
(外国語ができなくても海外でしばらく生活したら知識的に習わなくてもだんだん喋れるようになる理論)
泥開発する時にネットで拾ったjavaのコードをペタペタコピペプログラミングするだけでも勉強になる
javaもkotlinも知識皆無の状態でkotlinで泥アプリ開発に取り組んだら見様見真似で簡単なアプリ作れた
ある程度コピペしてたらjavaのこの書き方はkotlinではこう書きそうっていうのがなんとなく察せてくるからandroid studioの補完を頼りに写経したりする
javaも知らないけど新しく言語の知識学ぶなんて面倒くさいからヤダ!知識皆無だけどすぐ何か作りたい!hello wordとか練習問題みたいなの書いても面白くないからモチベーションわかない!すぐ作りたい物作りたい!って場合は
ネットのサンプルと強力なIDEの支援を頼りにコピペ写経するのが効率よさそう
(外国語ができなくても海外でしばらく生活したら知識的に習わなくてもだんだん喋れるようになる理論)
623デフォルトの名無しさん
2017/09/16(土) 12:49:19.86ID:64cU0LXO624デフォルトの名無しさん
2017/09/16(土) 12:50:15.30ID:64cU0LXO それと思ったのはKotlin・・というよりプログラム初学者は
言語仕様、ライブラリ、プラットフォームの知識がごちゃ混ぜになってるのかも
「Java言語仕様の知識前提」の場合はデメリットだけど、後者2つはそうではないんだよね
ちゃんと切り分けて教える必要があるのかもしれない
言語仕様、ライブラリ、プラットフォームの知識がごちゃ混ぜになってるのかも
「Java言語仕様の知識前提」の場合はデメリットだけど、後者2つはそうではないんだよね
ちゃんと切り分けて教える必要があるのかもしれない
625デフォルトの名無しさん
2017/09/16(土) 15:17:58.69ID:iyhV3x2n >>620
一々Javaで考えてからKotlinに読み替えるのではなく最初からKotlinで考えればいいのでは?それは出来ないの?
一々Javaで考えてからKotlinに読み替えるのではなく最初からKotlinで考えればいいのでは?それは出来ないの?
626デフォルトの名無しさん
2017/09/16(土) 15:51:26.67ID:zchkTGlK 前途洋々たる人にJavaを教えたいかというとそうでもない、しかし現状kotlinにはjavaの知識がいくらか必要というジレンマ
627デフォルトの名無しさん
2017/09/16(土) 17:15:31.02ID:k4zUo1jM 自動変換はマジで神機能だな
628デフォルトの名無しさん
2017/09/17(日) 09:11:08.18ID:e3nYUfGU kotlin変換はスニペット単位で変換挿入できれば初学者サポートとして文句ないんだけど
まあ高望みしても仕方ないなw
まあ高望みしても仕方ないなw
629デフォルトの名無しさん
2017/09/17(日) 09:16:06.15ID:s1Tpc6AU Kotlinを使い始めるのにJavaから始めないといけないのも高望みだから仕方ない
JVMとJava LibraryありきなんだからJavaを知らないで何が始まろうかと理解している
JVMとJava LibraryありきなんだからJavaを知らないで何が始まろうかと理解している
630デフォルトの名無しさん
2017/09/17(日) 10:57:51.48ID:iGeioDqi >>628
騙されたと思ってandroid studioでkotlinを開いてそこにjavaのスニペットをそのまま普通に貼り付けてみ
騙されたと思ってandroid studioでkotlinを開いてそこにjavaのスニペットをそのまま普通に貼り付けてみ
631デフォルトの名無しさん
2017/09/17(日) 12:20:57.80ID:QcEs4Olk >>628
できるぞ
できるぞ
632デフォルトの名無しさん
2017/09/17(日) 20:10:21.20ID:881Zhju6 kotlinというかIntelliJはなにかにつけてUnresolved Referenceで発狂して真っ赤になるのを潰していかんといかん
全部自前のkotlinファイルとパッケージだけで構成すれば絶対に起こらん事象だが、そんなのは稀だ
全部自前のkotlinファイルとパッケージだけで構成すれば絶対に起こらん事象だが、そんなのは稀だ
633デフォルトの名無しさん
2017/09/17(日) 20:33:40.63ID:8Aq7R6E2 >>632
あれはライブラリ作者とプラグイン作者が7割くらい悪い
提供されるテンプレートでjavaパッケージのimportの不足(しかもbuild.gradleに依存関係未記述)とか勘弁して欲しい
ていうかこれ作者のとこではどうやって動いてたんだ…
あれはライブラリ作者とプラグイン作者が7割くらい悪い
提供されるテンプレートでjavaパッケージのimportの不足(しかもbuild.gradleに依存関係未記述)とか勘弁して欲しい
ていうかこれ作者のとこではどうやって動いてたんだ…
634デフォルトの名無しさん
2017/09/17(日) 22:18:35.53ID:hEJjpySw635デフォルトの名無しさん
2017/09/18(月) 21:46:47.81ID:KEjrNeQk 昔のEclipse環境下開発みたいなトラブル起こしてんなw
libs/*.jar と .classpath をコミットしてなくて、ライブラリ実装者とライブラリ利用者で環境が合致しないとかよくあった
build.gradleで依存管理してないなら、libs/*.jar と .idea/ で管理してるんじゃないのかね
ビルドできねーよってIssue発行して、build.gradleで依存管理するように直してもらおうぜ(Kotlinと全く関係ない話題
libs/*.jar と .classpath をコミットしてなくて、ライブラリ実装者とライブラリ利用者で環境が合致しないとかよくあった
build.gradleで依存管理してないなら、libs/*.jar と .idea/ で管理してるんじゃないのかね
ビルドできねーよってIssue発行して、build.gradleで依存管理するように直してもらおうぜ(Kotlinと全く関係ない話題
636デフォルトの名無しさん
2017/09/19(火) 01:56:04.30ID:q5GM4Sdx TornadoFXは面白そうだなと思って手を付けた瞬間
・TornadoFXのDSL記法では思った通りに動作しないがJavaFXでは動く
・JavaFXではうまく動かないがswt直呼びでは動く
・JavaのGUIアプリケーションではあまり得意ではない
の3者が混然一体となってGUI初心者に襲いかかってきた荒野の印象しかない
GUIやるのさぼってきたツケもあるしkotlin関係ないけどな
・TornadoFXのDSL記法では思った通りに動作しないがJavaFXでは動く
・JavaFXではうまく動かないがswt直呼びでは動く
・JavaのGUIアプリケーションではあまり得意ではない
の3者が混然一体となってGUI初心者に襲いかかってきた荒野の印象しかない
GUIやるのさぼってきたツケもあるしkotlin関係ないけどな
637デフォルトの名無しさん
2017/09/19(火) 02:57:40.00ID:33S+M35U FXには手を出すなって死んだばっちゃが言ってた
638デフォルトの名無しさん
2017/09/19(火) 03:13:01.72ID:NsD/KMp/ HTTPプロトコル受けるようにして、GUIはHTMLとjavascriptでブラウザ任せでやる方がいいんでね?
639デフォルトの名無しさん
2017/09/19(火) 11:33:34.11ID:yNuGs4H1 とるねーどFXのDSL記法は初心者の「こうかな?これなら動くかな?」という学習の試行錯誤を念入りに潰してバグに変えるプロ
設定記述手法以外のDSLなんてまあたいていそんなもんだが
どうしてもPCでGUI欲しくてなにもわからない最初ならJavaFXにするのがよいよ
設定記述手法以外のDSLなんてまあたいていそんなもんだが
どうしてもPCでGUI欲しくてなにもわからない最初ならJavaFXにするのがよいよ
640デフォルトの名無しさん
2017/09/19(火) 23:03:32.67ID:yNuGs4H1 >>630
IntelliJではできんことのほうが多いね
完動するJavaのクラスのファイルとかそういうでっかいのか意味のあるわかりやすい小さいやつとかじゃないとまず無理
それでも便利だろうという指摘はもっともだが
IntelliJではできんことのほうが多いね
完動するJavaのクラスのファイルとかそういうでっかいのか意味のあるわかりやすい小さいやつとかじゃないとまず無理
それでも便利だろうという指摘はもっともだが
641デフォルトの名無しさん
2017/09/20(水) 00:55:44.49ID:yi4mI7ko tornadoFXで丸1日悩んでいたことがJavaFXでは1時間でできたなんていう笑い話が…
別にこれに限った話じゃないけど、今から何か始めたいって人は「kotlin対応新鋭フレームワーク!」みたいな宣伝には騙されずにJava製のでいいからメジャーなやつを選ぼうね
たいていkotlinでの書き方みたいなのが公開されてるからそれで充分さ
別にこれに限った話じゃないけど、今から何か始めたいって人は「kotlin対応新鋭フレームワーク!」みたいな宣伝には騙されずにJava製のでいいからメジャーなやつを選ぼうね
たいていkotlinでの書き方みたいなのが公開されてるからそれで充分さ
642デフォルトの名無しさん
2017/09/20(水) 12:49:45.18ID:UnWC6mNR 画面はWebView(JavaScript連携)でいいよ
643デフォルトの名無しさん
2017/09/21(木) 00:08:50.00ID:fijEecfV そこそこの長さの文字列をわかりよく文字列のリストにする方法ってないですか
"ABCDE".toList()だとCharのリストになってmapとか繋げて変換がいります
"ABCDE".split("")だとなんか7つのリストになります
文字境界の正規表現を指定すればいいような気もしますが探せませんでした
"ABCDE".toList()だとCharのリストになってmapとか繋げて変換がいります
"ABCDE".split("")だとなんか7つのリストになります
文字境界の正規表現を指定すればいいような気もしますが探せませんでした
644デフォルトの名無しさん
2017/09/21(木) 03:27:44.93ID:AcIIQNEl >>643
"ABCDE".split("(?=.)") ではどうか?
"ABCDE".split("(?=.)") ではどうか?
645デフォルトの名無しさん
2017/09/21(木) 11:28:55.55ID:fijEecfV >>> "ABCDE".split("")
[, A, B, C, D, E, ]
>>> "ABCDE".split("").size
7
>>> "ABCDE".split(Regex("(?=.)"))
[A, B, C, D, E]
おお、ありがとうです
しかしありそうでないのねStringで分けるやつ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
[, A, B, C, D, E, ]
>>> "ABCDE".split("").size
7
>>> "ABCDE".split(Regex("(?=.)"))
[A, B, C, D, E]
おお、ありがとうです
しかしありそうでないのねStringで分けるやつ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
646デフォルトの名無しさん
2017/09/21(木) 13:35:52.21ID:mLLoqbOf647デフォルトの名無しさん
2017/09/21(木) 21:11:04.25ID:fijEecfV だからそれだとStringをCharにしてからStringにするという手間がかかっ
for(int var6 = 0; var6 < var5.length(); ++var6) {
char item$iv$iv = var5.charAt(var6);
String var13 = String.valueOf(item$iv$iv);
destination$iv$iv.add(var13);
}
…ってなかった。最近の言語のコレクションのmapとかあのへんのメソッドは空気を読んでて困る(えらい)。じゃあこれにします
for(int var6 = 0; var6 < var5.length(); ++var6) {
char item$iv$iv = var5.charAt(var6);
String var13 = String.valueOf(item$iv$iv);
destination$iv$iv.add(var13);
}
…ってなかった。最近の言語のコレクションのmapとかあのへんのメソッドは空気を読んでて困る(えらい)。じゃあこれにします
648デフォルトの名無しさん
2017/09/23(土) 03:05:43.18ID:LuIx8rlF Kotlinは配列というかリストになんか入れるとエラーで二度と引き出せなくなるのが嫌
何か不都合があって引き出せないのなら最初から弾いてくれ
何か不都合があって引き出せないのなら最初から弾いてくれ
649デフォルトの名無しさん
2017/09/23(土) 06:21:39.07ID:iHkIwIdJ 意味がわからん
650デフォルトの名無しさん
2017/09/23(土) 09:46:44.92ID:X9FmtUo8 つmutableListOf
651デフォルトの名無しさん
2017/09/23(土) 09:47:52.09ID:X9FmtUo8 いや意味がわからんな
652デフォルトの名無しさん
2017/09/23(土) 10:14:30.20ID:Fr4ObNsJ あのへんは型とか継承とかの理解きちんとしてないとちょっと複雑なの入れたときものっそいエラーになるよ
適当に書いて適当に使ってると動くと見せかけていざというとき詰まる箇所ベスト3に入ると思う
適当に書いて適当に使ってると動くと見せかけていざというとき詰まる箇所ベスト3に入ると思う
653デフォルトの名無しさん
2017/09/23(土) 10:59:53.99ID:BNc4tUhk 具体例があると話も広がりそうだけどイメージがわかない
654デフォルトの名無しさん
2017/09/23(土) 13:45:04.86ID:HgJ0Nznd コレクションって色々種類があって、
問題によって適切なクラスを選ぶべきとか言っていたくせに
mutableListはmutableListしか種類ないし、それで別に問題がないってどういうことだよ
フィールドもprivateにしてsetter, getterからアクセスしろとか言っていたくせに
プロパティアクセスは実質フィールドをpublicにしているのと変わりないじゃねえか
その他、継承は良いことだからたくさん使って活用していこうとか言っていたくせに
openをつけないと継承できなくして、実質継承は推奨しないみたいになってるのなんなん
嘘ばっかり言いやがって
問題によって適切なクラスを選ぶべきとか言っていたくせに
mutableListはmutableListしか種類ないし、それで別に問題がないってどういうことだよ
フィールドもprivateにしてsetter, getterからアクセスしろとか言っていたくせに
プロパティアクセスは実質フィールドをpublicにしているのと変わりないじゃねえか
その他、継承は良いことだからたくさん使って活用していこうとか言っていたくせに
openをつけないと継承できなくして、実質継承は推奨しないみたいになってるのなんなん
嘘ばっかり言いやがって
655デフォルトの名無しさん
2017/09/23(土) 14:17:09.35ID:8bsZ0VcP >>652
「のっそい」って何処の方言?沢山って意味?
「のっそい」って何処の方言?沢山って意味?
656デフォルトの名無しさん
2017/09/23(土) 14:32:54.88ID:Ok7b72Pt >>654
いろいろ勘違いしててどこから突っ込めばいいのやら
いろいろ勘違いしててどこから突っ込めばいいのやら
657デフォルトの名無しさん
2017/09/23(土) 15:29:22.72ID:vuIl3Vgh プロパティアクセスは、publicなフィールドへのアクセスと違って、
setを制限してgetだけにできるし、
setするときの値チェックなんかもできるし、
privateフィールドをsetter/getterでアクセスする利点はそのままに、
使うときの表記をシンプルにしてくれる
setを制限してgetだけにできるし、
setするときの値チェックなんかもできるし、
privateフィールドをsetter/getterでアクセスする利点はそのままに、
使うときの表記をシンプルにしてくれる
658デフォルトの名無しさん
2017/09/23(土) 15:29:38.76ID:vuIl3Vgh 継承するよりコンポジションしてアクセスを転送する方がいいっていうのは
もうオブジェクト指向では定説
もうオブジェクト指向では定説
659デフォルトの名無しさん
2017/09/23(土) 15:37:14.57ID:vuIl3Vgh ミュータブルなコレクションに厳密な静的型チェックを適用としようとするのはいろいろ限界がある
Javaでは厳密な静的型チェックを放棄して使いやすさを優先してる
Javaでは厳密な静的型チェックを放棄して使いやすさを優先してる
660デフォルトの名無しさん
2017/09/23(土) 15:40:52.48ID:JwqPmi7Z 今更だけど、StringをStringリスト(配列)にするってクッソ馬鹿っぽいな
Stringをnewするのも重いし、確保したメモリをGCで回収するのも重くなる
「StringをCharにしてからStringにするという手間」とか言うならChar配列で扱えというね
String配列扱うくらいに性能を考えないなら、当初の通りに#toList #map使っててもおkだろ
Stringをnewするのも重いし、確保したメモリをGCで回収するのも重くなる
「StringをCharにしてからStringにするという手間」とか言うならChar配列で扱えというね
String配列扱うくらいに性能を考えないなら、当初の通りに#toList #map使っててもおkだろ
661デフォルトの名無しさん
2017/09/23(土) 16:00:34.34ID:BNc4tUhk >>654
>mutableListはmutableListしか種類ない
意味がわからない
大枠でList, Set, MapなどがあってLinkedHashMapとSortedMapは順序制御が違うし
ArrayListとLinkedListは追加削除のパターンによって計算量オーダーが異なる
>setter, getterからアクセスしろとか言っていたくせに
構文が理由ではない
>フィールドをpublicにしているのと変わりない
構文が変わりないだけ
>mutableListはmutableListしか種類ない
意味がわからない
大枠でList, Set, MapなどがあってLinkedHashMapとSortedMapは順序制御が違うし
ArrayListとLinkedListは追加削除のパターンによって計算量オーダーが異なる
>setter, getterからアクセスしろとか言っていたくせに
構文が理由ではない
>フィールドをpublicにしているのと変わりない
構文が変わりないだけ
662デフォルトの名無しさん
2017/09/23(土) 16:22:03.12ID:vuIl3Vgh663デフォルトの名無しさん
2017/09/23(土) 16:43:59.09ID:JwqPmi7Z COW信者乙
さておき、入れ物のStringインスタンスをnewするのはやめたいよな
中身をコピーするかどうか以前にJVM上のインスタンスの確保が重たいんだよ
そして、GCで回収して回る対象個数が増えて重たくなるのは中身のコピー有無は関係ないんだよ
さておき、入れ物のStringインスタンスをnewするのはやめたいよな
中身をコピーするかどうか以前にJVM上のインスタンスの確保が重たいんだよ
そして、GCで回収して回る対象個数が増えて重たくなるのは中身のコピー有無は関係ないんだよ
664デフォルトの名無しさん
2017/09/23(土) 17:42:00.77ID:8bsZ0VcP かといって日頃パフォーマンスに影響するような膨大な処理をさせてないので気にならない
665デフォルトの名無しさん
2017/09/23(土) 20:38:20.82ID:3qopZopL666デフォルトの名無しさん
2017/09/23(土) 21:43:26.21ID:Kp7vI9MI 気に入らないところが、JavaやScalaを使い込んだ人視点で、このスレレベルからみるとむしろズレてるね
667デフォルトの名無しさん
2017/09/23(土) 22:33:09.90ID:lJM5VEju >>662
そういったイミュータブルな文字列を表現するデータ構造として Rope がある
・Rope (data structure) - Wikipedia
https://en.wikipedia.org/wiki/Rope_(data_structure)
・ロープ: 理論と実践 - IBM developerWorks / Java technology
https://www.ibm.com/developerworks/jp/java/library/j-ropes/
・最終報告 - Ropeを用いたRuby処理系の高速化に関する報告
http://www.spinute.org/ruby/gsoc2016/japanese.html
特に「Stringの一部分を取り出して新しいStringを作る」という
substring 操作に関しては、上記の Wikipedia のページからリンクされている
原論文(英語)の中で疑似コードを使って丁寧に解説されている
で、肝心の Kotlin 実装は知らない(汗
そういったイミュータブルな文字列を表現するデータ構造として Rope がある
・Rope (data structure) - Wikipedia
https://en.wikipedia.org/wiki/Rope_(data_structure)
・ロープ: 理論と実践 - IBM developerWorks / Java technology
https://www.ibm.com/developerworks/jp/java/library/j-ropes/
・最終報告 - Ropeを用いたRuby処理系の高速化に関する報告
http://www.spinute.org/ruby/gsoc2016/japanese.html
特に「Stringの一部分を取り出して新しいStringを作る」という
substring 操作に関しては、上記の Wikipedia のページからリンクされている
原論文(英語)の中で疑似コードを使って丁寧に解説されている
で、肝心の Kotlin 実装は知らない(汗
668デフォルトの名無しさん
2017/09/23(土) 22:39:08.56ID:XK13+/v0669デフォルトの名無しさん
2017/09/24(日) 02:01:15.02ID:GOJB25/b >>666
文法が気に入らないって言ってるだけでJavaやScalaを使い込んでるようにも見えんがな
JVMの仕様上、JavaやScalaの方が最適化されてるからKotlinが気に入らないって話かと思って読んだらもっと浅い話だった
Kotlinの文法が良いってこのスレは賞賛してるから論点はこのスレと合致してる
ただ、Kotlinの文法がダメって記事と、Kotlinの文法がイイってスレとで感想が真逆なだけだ
文法が気に入らないって言ってるだけでJavaやScalaを使い込んでるようにも見えんがな
JVMの仕様上、JavaやScalaの方が最適化されてるからKotlinが気に入らないって話かと思って読んだらもっと浅い話だった
Kotlinの文法が良いってこのスレは賞賛してるから論点はこのスレと合致してる
ただ、Kotlinの文法がダメって記事と、Kotlinの文法がイイってスレとで感想が真逆なだけだ
670デフォルトの名無しさん
2017/09/24(日) 02:17:41.07ID:vbDFNvhm >>655
ものすごい→ものっそい
ものすごい→ものっそい
671デフォルトの名無しさん
2017/09/24(日) 09:32:49.28ID:UrGEC0gh tornadoFXはDSLのダメなとこ出てるねえってだけだから、それ気にならないならいいんじゃないかな
足りない情報は君が発信するんだ
足りない情報は君が発信するんだ
672デフォルトの名無しさん
2017/09/24(日) 10:29:34.48ID:tu0D//Rh Kotlin は、Groovy, Scala, Ruby の影響を受けている
Ruby を関数型にした、Elixir を意識している。
関数型では、デフォルトが、immutable
Ruby を関数型にした、Elixir を意識している。
関数型では、デフォルトが、immutable
673デフォルトの名無しさん
2017/09/24(日) 14:15:58.51ID:q8xwt5Nv ねえねえおにいちゃん
ミュータブルリストの先頭から要素を削除して詰める(戻り値不問)って行為をいちばんうまくできる書き方ってなあに
ミュータブルリストの先頭から要素を削除して詰める(戻り値不問)って行為をいちばんうまくできる書き方ってなあに
674デフォルトの名無しさん
2017/09/24(日) 14:31:53.81ID:c233uqnI >>673
removeAt() じゃないの?
removeAt() じゃないの?
675デフォルトの名無しさん
2017/09/24(日) 14:32:52.09ID:c233uqnI コマンドラインでこんな風にできたが
>>> val a = mutableListOf(1, 2, 3)
>>> a
[1, 2, 3]
>>> a.removeAt(0)
1
>>> a
[2, 3]
>>> val a = mutableListOf(1, 2, 3)
>>> a
[1, 2, 3]
>>> a.removeAt(0)
1
>>> a
[2, 3]
676デフォルトの名無しさん
2017/09/25(月) 02:59:33.77ID:JjTJVibn kotolinってc#で言うpartial classみたいなことできないのかな?
実装を分けたい
実装を分けたい
677デフォルトの名無しさん
2017/09/26(火) 20:47:43.28ID:fZxiOEU0 fun main(args : Array<String>){
test(){
println("test!")
}
}
fun <T> test(body: () -> T ) : T {
println("START")
try{
return body
}
finally{
println("END")
}
}
これで
(returnの行): error: type mismatch: inferred type is () -> T but T was expected
ってエラー出るのなんでですか
まだどっかに<T>って書かないとダメですか
STARTって表示してtest!って表示してENDって表示するようにしたいんですが
test(){
println("test!")
}
}
fun <T> test(body: () -> T ) : T {
println("START")
try{
return body
}
finally{
println("END")
}
}
これで
(returnの行): error: type mismatch: inferred type is () -> T but T was expected
ってエラー出るのなんでですか
まだどっかに<T>って書かないとダメですか
STARTって表示してtest!って表示してENDって表示するようにしたいんですが
678デフォルトの名無しさん
2017/09/26(火) 20:59:27.36ID:zAWxdVvk bodyは () -> T じゃん?つまり body() がTじゃん?
返り値いらないならUnit型でも
返り値いらないならUnit型でも
679デフォルトの名無しさん
2017/09/26(火) 21:19:23.18ID:rflTuAqa println()って何か返すんだっけ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★3 [蚤の市★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 [煮卵★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【テレビ】石破前首相 中国レーダー照射「フェーズ上がってる」と指摘も「日本の世論が激高するのは避ける必要が…」 [少考さん★]
- 【悲報】中国メディア「高市が撤回して済む話ではなくなった。わざと戦闘機をレーダー照射距離に来させる戦争扇動者だ」 [359965264]
- 【高市与党】維新・吉村代表「維新は飲食費上限1万円とします」⇒キャバクラ、ガールズバー、スナック三昧 [115996789]
- 小泉防衛大臣「事前通報の認識無し」 [163661708]
- 【画像】GACKTプロデュースの7800円弁当、めちゃくちゃ美味そう🤤 [779938112]
- ポケモンの「じしん」という技、不謹慎だと話題にwwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- ネット民「『苺ましまろ』の広告は醜悪。完全に犯罪だ」 [932029429]
