Kotlin [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
2017/04/14(金) 10:49:57.90ID:rxkV6/uG
>>114
coroutineって「状態を持つ」ような気がするんだけど、
関数型プログラミングのイミュータブルであるべきという
考え方に逆行しているという理解であってますか?
2017/04/15(土) 00:40:02.53ID:5VFPMUgC
>>115
なんちゃって関数型プログラミングでは状態の局所化に役立つ便利な道具だと思うよ
ステートマシンなどという糞を排除できる
2017/04/16(日) 13:23:05.16ID:FOOthHC9
一つのクラスに複数のアノテーション持てない感じ?
2017/04/18(火) 07:19:21.21ID:q56THeJt
このスレで言うのもなんだが、初心者の質問はTwitterで投げるのがいいよ
普及させたい人が定期的に検索して拾ってくれるから
119115
垢版 |
2017/04/22(土) 21:58:39.69ID:8rHjbk1S
>>114
オブジェクトのように「フィールド」に「値」を状態として持つのではなく、
coroutineは「コード上」に「まだ実行されていない処理」を状態として持つから
複雑で分かりにくいんじゃないかなと思いました。

>>116
coroutine自体がステートマシンだと書いてあるものを見たのですが、
ステートマシンが局所化されるモナドのような何か?(わかってない)
120デフォルトの名無しさん
垢版 |
2017/04/23(日) 10:19:21.32ID:9Bq1d30L
suspend関数ってコルーチンの中でしか使えないってことは、そこらじゅうlaunchの類だらけになるってこと?笑
まだ滅多に使用例のってるブログとかみかけないね。
生き残れるのか?これw

>>119 https://github.com/pljp/kotlin-coroutines/blob/japanese_translation/kotlin-coroutines-informal.md#状態マシン
2017/04/28(金) 17:34:29.34ID:80AWOTNk
ことりん擬人化まだ?
122デフォルトの名無しさん
垢版 |
2017/05/01(月) 23:00:23.52ID:+TVy5Krd
Rubyの、p, pp みたいに、自動的に、コンテナ内を展開して、
中のオブジェクトを、コンソールに表示してくれる、デバッグ用関数はありますか?

p コンテナ・オブジェクト
2017/05/04(木) 00:18:07.49ID:lRx89izX
ない
そんなもんIDEのデバッガで止めて見ればいいだろ
2017/05/04(木) 00:39:59.73ID:7TNYL3q7
それはダサいわ
2017/05/13(土) 22:26:26.42ID:UQoi629m
なんか折りたたみすぎるんだよな〜
2017/05/18(木) 03:33:23.69ID:DKg0Na73
大勝利キタ━━━━(゚∀゚)━━━━ !!!!
127デフォルトの名無しさん
垢版 |
2017/05/18(木) 03:35:35.85ID:Wz6O2oVO
きたな
2017/05/18(木) 03:38:32.99ID:l26+mVZr
まじか
2017/05/18(木) 08:19:21.98ID:6xLYhPbf
アプデかなんか来たの?
2017/05/18(木) 08:34:44.83ID:eCnYzL6s
Androidでのファーストクラスサポートだそうですよ
2017/05/18(木) 08:35:35.63ID:zgtLgueR
Today, at the Google I/O keynote, the Android team announced first-class support for Kotlin.

だって。
2017/05/18(木) 09:08:10.23ID:PzmNC1sh
ファーストクラスってなんですか?
133デフォルトの名無しさん
垢版 |
2017/05/18(木) 09:13:30.93ID:zw0yFHDv
ビジネスクラスより上
2017/05/18(木) 09:37:46.74ID:cqnkW2Fd
例の訴訟絡みでjvm捨てると思ってたんだがなあ
135デフォルトの名無しさん
垢版 |
2017/05/18(木) 10:06:03.05ID:L+z+Rh5o
記念アゲ (・8・)
2017/05/18(木) 12:11:08.36ID:zgtLgueR
Android Studioで標準サポートになる、つうことだろ。
2017/05/18(木) 12:12:50.95ID:NEKf9u2/
AndroidがKotlinサポートか
Java使わなくていい場面増えるのは歓迎だけど
C#のが良かった

https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/
http://jp.techcrunch.com/2017/05/18/20170517google-makes-kotlin-a-first-class-language-for-writing-android-apps/
2017/05/18(木) 12:17:09.11ID:w2PMjkvW
GWにkotlin始めて書きやすいなと思ってた俺大勝利
2017/05/18(木) 12:38:42.71ID:zgtLgueR
>>137
今までのJava資産を活かしながらシームレスに移行できる、というのが大きい。
その意味でc#はありえん。
2017/05/18(木) 12:57:50.54ID:3vvtk3AJ
いまJavaを使ってる人を救うことを考えたらまずはKotlinだろうね
2017/05/18(木) 13:16:17.63ID:XKDAC558
まじかよ
コトリン大好きな俺大勝利じゃん
祝杯や
2017/05/18(木) 13:21:33.03ID:9vmsiCj/
やったぜ
2017/05/18(木) 13:23:06.77ID:yATb/f/P
えっちだぁw
2017/05/18(木) 15:12:54.92ID:d+oDyp66
日本Kotlinユーザグループ代表、長澤 太郎
Kotlinスタートブック -新しいAndroidプログラミング、2016

WEB+DB vol.94 の特集が、Kotlin, Electron

m, 10
a, 5
m, 2

こういう行区切りのデータがある時、文字列・数値の順番で、ソートするにはどうするの?
2017/05/18(木) 15:28:16.59ID:/Shfsuc2
KotlinじゃなくSwiftでも良いのにな
確か、Android向けのクロスビルドができるようになってたろ
2017/05/18(木) 16:57:05.60ID:sDwtWkJp
AppleがGoを公式採用するくらいあり得ないことだな
2017/05/18(木) 17:15:26.94ID:zgtLgueR
>>145
今までのjava資産を考えるとありえん。
appleは悪い意味でおかしい。
148デフォルトの名無しさん
垢版 |
2017/05/18(木) 18:29:24.60ID:xYh7ZO1T
競技プログラミングでKotlinを覚えるか…
2017/05/18(木) 23:54:53.47ID:s8Za2vto
>>70
念願かなったね。おめでとう。
2017/05/19(金) 08:25:10.64ID:Yy4p2hUQ
>>144 自己レス
class Person(val age: Int, val name: String) { }

val mlist: MutableList<Person> = mutableListOf( );

mlist.add(Person(25, "Tom"));
mlist.add(Person(25, "Dave"));
mlist.add(Person(20, "Kate"));
mlist.add(Person(20, "Alice"));

val sortedList = mlist.sortedWith(compareBy({ it.age }, { it.name }))

sortedList.forEach {
println("${it.age} : ${it.name}")
}

出力
20 : Alice
20 : Kate
25 : Dave
25 : Tom
2017/05/19(金) 13:20:04.25ID:JnsQ7Gr+
ニュース見て始めて半日くらいの調べもの堪え性のない人が質問です!
それはそうと初心者スレとか質問スレとかあってもいいかもしれないですね!

>>> var list = listOf(10, 20, 30)
>>> list[1] + 5
25
>>> var map = mapOf(1 to 10, 2 to 20, 3 to 30)
>>> map[1] + 5
error: infix call corresponds to a dot-qualified call 'map[1].plus(5)' which is not allowed on a nullable receiver 'map[1]'. Use '?.'-qualified call instead
>>> map[1]?.plus(5)
15
入ってる数字をあとで計算とかに使いたいだけなんですがどこの考え方間違ってるんでしょうか
2017/05/19(金) 20:24:00.83ID:t+9TXaRk
>>70
おめ
2017/05/19(金) 20:34:19.80ID:Ig6oJN7I
>>71
これは恥ずかしいwwww
154デフォルトの名無しさん
垢版 |
2017/05/19(金) 22:29:26.32ID:HhPXEO/A
じゃ今後のAndroidのライブラリにはKotlinで書かれてるものの出てくるのかな?
2017/05/20(土) 00:38:31.20ID:ap8WyFQI
それはないだろう
2017/05/20(土) 02:32:08.53ID:WmFfeyqJ
>>151
map[何々]が、nullable だから。
map[1]は存在するけど、map[4]なら存在しない

map[1].plus(5)なら、map[1](レシーバー)がnullableだから、
null.plus(5)の場合にバグるから、?. null許容演算子を使う
2017/05/20(土) 15:30:08.83ID:LOC45URm
Javaの仕様がそのまま引き継がれてるんだな
Listのgetのインデックスが範囲外だとIndexOutOfBoundsException例外で
Mapのgetのキーが存在しない場合は例外じゃなくてnull返すのね
2017/05/20(土) 15:41:06.41ID:8ml7mLK3
getOrNullとかあるよ
2017/05/20(土) 19:38:14.41ID:NqXZxUdZ
Android StudioでのIntelliJ Kotlinプラグインが公式サポートされただけでAndroid System LibにKotlinクラス群が入ったわけじゃないんだよなぁ

>>154
今までと変わらずやる気になれば出るし、やる気にならなければ出ない程度かと
別段メリットがあるようには思えないけど、誰かKotlin Androidライブラリプロジェクトテンプレート作ってくれよ
160デフォルトの名無しさん
垢版 |
2017/05/20(土) 20:11:09.01ID:LOC45URm
企業内での使用はGoogle公式かどうかですごい影響あるよ
2017/05/21(日) 10:31:28.30ID:4E+x2A2G
これをきにコトリンを始める人がいっぱいいそうだが
ほとんど人が挫折するんだろうな
2017/05/21(日) 10:35:53.77ID:W3P4J6B5
こんな簡単な言語で挫折する要素とは
2017/05/21(日) 10:40:32.81ID:tBEndF3S
Kotlin言語そのものは難しくないがJavaの言語に加えて
Javaのライブラリまで含めて覚えないといけなそうだから
C#より敷居が高い
164デフォルトの名無しさん
垢版 |
2017/05/21(日) 11:08:54.99ID:h5RyjkDf
kotlinにはtypescriptのtsserverみたいに補完機能はないんでしょうか?
2017/05/21(日) 11:33:04.16ID:W3P4J6B5
第一級開発言語に指定したんやからfwは全てkotlinラッパを出すやろ
166デフォルトの名無しさん
垢版 |
2017/05/21(日) 12:33:48.18ID:sr6r/1gA
?なvarをif != null したら!!いらないようにしてほしいな〜
valに入れ直すのはスマートじゃないよ
2017/05/21(日) 13:24:08.34ID:tU5Dlyyu
>>156
似たようなとこで詰まってた
Nullableでご安全にする理屈はわかるけど連想配列の利用法としては煩雑だね
覚えとくしかないか
それともこのへん便利な格納構造があるのかな
2017/05/21(日) 18:45:53.63ID:UuW+xgyM
>>> var map = mapOf(1 to 10,2 to 20)
>>> map[3]
null
>>> var list = listOf(10,20)
>>> list[3]
java.lang.ArrayIndexOutOfBoundsException: 5
at java.util.Arrays$ArrayList.get(Arrays.java:3841)
>>157の言う通り、究極的にはこのしょーもない内部仕様のせいである
この仕様を知ってるKotlinがmap作った時点で全要素Nullableにしてくれてるのだね

>>> var value = map[2]
>>> value
20
>>> value + 5
error: infix call corresponds to a dot-qualified call 'value.plus(5)' which is not allowed on a nullable receiver 'value'. Use '?.'-qualified call instead
>>> var value:Int = map[2]
error: type mismatch: inferred type is Int? but Int was expected
このへんも、Null安全のない言語から来た人はふんす!!ってなると思われ
2017/05/21(日) 20:26:44.09ID:9L9dm7b/
>>163
C#文法とC#ライブラリを学習するよりは楽そう

>>165
Java APIをKotlin APIに透過的に見せるからラッパーの用意すら要らんでしょ
2017/05/21(日) 20:46:52.64ID:RH0jdAto
最終的に訴訟のネタにもなってるjavaを切り離す方向まで行かないんですかね。
171デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:44:40.19ID:mFn/WD+c
VMの問題なんだからいまさらどうしようもないだろ。
2017/05/21(日) 22:54:56.67ID:1evlh7eH
Ruby, JS などで、メソッドチェーンすると、
nil オブジェクトから、メソッドを呼べないと言う、
No Method Error なんて、しょっちゅう起こるし、

メソッドチェーンはテストも、しにくい
2017/05/22(月) 01:22:13.90ID:yjMvX9x8
素のkotlinでは使えるけどAndroidのkotlinでは使えないのってある?
2017/05/22(月) 01:48:31.03ID:97nOcTMK
Nullableかどうかは書き手が決められるのがステキとか言っておきながら
mapOfだと"暗黙の"Nullableになるように見えるのが初心者的にキモいという主張だろう
誰もNullableの有用性の議論などしてない
読点君には理解できんだろうが
2017/05/22(月) 06:16:11.80ID:jD5FXPee
>>170-171
VMじゃなくAPI(ライブラリ実装)の問題でしょ
Sun(現Oracle)の作った全Java APIを放棄してKotlinで一から作れば訴訟問題からは無関係になれる

まぁ、GoogleもJetbrainsもお互いに「お前がやれ」とか思ってそうだけど
Google: KotlinはJetbrainsのモノなんだから、JetbrainsがKotlin APIを整備するべき
Jetbrains: Java訴訟はGoogleの問題なんだから、GoogleがKotlin APIを整備するべき
2017/05/22(月) 08:14:55.23ID:fxLikn6a
map を実装する場合、普通は、2種類書く

そのキーが無い場合、
null を返すものと、例外をthrow するもの

nullable になるのは、null を返すもの
177デフォルトの名無しさん
垢版 |
2017/05/22(月) 08:34:20.91ID:7g15jPZv
>>175
VMの方のAPIだよ。
言語の方のAPIだけの問題なら、OpenJDKだけで解決してしまうだろが。
2017/05/22(月) 09:45:07.45ID:WLj9ZHQ7
>>177
確かそのapiのインターフェース自体に著作権があるというのがoracleの主張だったはず
2017/05/22(月) 09:46:09.30ID:jD5FXPee
OpenJDKにもVM実装は含まれてるんだけどなw
Oracle JVMとOpenJDK JVMで微妙に要件や振る舞い違うって業界の人は頭抱えるけどまぁ誤差か
2017/05/22(月) 09:46:23.44ID:NZ0IuE42
擬人化まだかよ
無能どもめ
2017/05/22(月) 09:52:42.83ID:WLj9ZHQ7
>>175
Androidのapiインターフェースの話をしてるんだからgoogleじゃない?
でもjavaと切り離すなんてできないだろうから、少しずつやってくしかないね。
コレクション系の独自実装とか始まったりして
swiftもobjective-cの文字列型とswiftの文字列型があってapiインターフェース呼び出しの際に暗黙の型変換が行われてた。
そんな感じになるのかな。かなりキモいけど
2017/05/22(月) 18:40:23.05ID:jD5FXPee
「apiインターフェース」の「頭痛が痛い」みたいな表現、嫌いじゃない:D

>>160
その昔、Apple公式だからという点のみで流行ったSwiftという言語があってな・・・
あれも技術を知らない企画屋がそんな感じで企業内採用を提案したんだよな、嫌な事件だったね
2017/05/23(火) 19:42:46.96ID:dGC6uRRV
null非許容って使ってみると地味に結構不便だな…
今までとは根本的に設計方針を変えなきゃならないものがあるなぁ…
2017/05/23(火) 19:49:01.45ID:IihgumLk
var a : String? = null
2017/05/23(火) 20:27:48.65ID:oZAHFLLi
型安全でないnull使うより、その型のnull定数を定義するほうが楽だよ。
2017/05/23(火) 20:49:32.53ID:Hx0L3jS4
val hoge;
{
2017/05/23(火) 21:06:38.96ID:cBJ7DVw+
null参照の概念は10億ドル単位の過ちってそれ一番言われてるしなw
偉人の言葉を信仰心と共に信じるべし
2017/05/23(火) 21:36:52.74ID:gX8pe08F
ぬるぽ
2017/05/24(水) 01:18:07.88ID:9HF6LZlN
>>183
?使うだけなのに何言ってんの?
大昔の案件で引数には必ずnullチェックを入れるというコーディング規約があって、保守性は下がるし規約に従わないやつはいるしで散々だった。
2017/05/24(水) 12:26:54.17ID:t8jtcsol
intellij、if式を折りたたまないようにするオプションはどこですか?
2017/05/24(水) 12:44:50.63ID:t8jtcsol
>>189
たとえばintefaceのnotnullなプロパティを亜種的なクラスでnullableにオーバーライド、できないよねぇ。
個人レベルの開発ならそこらへんの曖昧さはかえって便利な場合もあったんだけどね。
まぁ最初から全部nullableにしちゃえば済む話だが9割の非nullに全部?なり!!を付けるのはキモい。
javaコードをそのまんまkotlinコードに移行は、できなくはないけどキモいコードになる。
192デフォルトの名無しさん
垢版 |
2017/05/24(水) 14:28:45.40ID:Fp8uMQ/t
  Λ_Λ  \\
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_Λ∩
  _/し' //. V`Д´)/
 (_フ彡        / ←>>188
2017/05/24(水) 15:15:47.70ID:9HF6LZlN
>>191
わざわざnullableなプロパティを含むインターフェースを使う意味がわかんない。ちゃんとnullチェックして渡せば良いじゃない。
2017/05/25(木) 00:19:31.03ID:Mhkkcekf
>>193
自分もそんなコードが欲しくなるとは予想しなかったけどな笑
nullであることを利用して動作変える派生クラスをkotlin化しようとして躓いたわ。
結局設計を変えることで対応したけどね。javaで使えてたトリッキーな手は使えなくなった不便さがあるね、便利さの陰に。
まぁ慣れの問題だが。
2017/05/25(木) 04:40:51.77ID:FYZ1kIH6
androidだとonCreateで初期化するような変数はnullableにしなきゃいけないのかと思ってたけど、lateinitってあるのね
個人的にはそこそこ使うから@とかの記号にしてほしかったけど
196デフォルトの名無しさん
垢版 |
2017/05/25(木) 06:20:09.08ID:5itOJ4P9
プロパティが、最初からデフォルト値を持っていたら、ダメなのか?

どうしても、nullが必要なのか?
2017/05/25(木) 08:51:21.17ID:iRBHnHtq
nullオブジェクト使わないの?
2017/05/25(木) 09:21:48.18ID:VyhgnQr+
関数の戻り値の型ならnullable欲しいな
戻り値がnullになるとき毎回exceptionをthrowするのかって話
2017/05/25(木) 09:23:32.29ID:E3n3KUhW
え?ww
2017/05/25(木) 09:37:46.25ID:VyhgnQr+
例えば数値を文字列として格納してるデータをファイルとかDBとかから取り出すとき
その値は数値としてしか使わないけどもしかしたらnullな場合もある
getter関数作るのにgetterでは必ず文字列として取得して変換可能か判断してから数値にする処理を毎回するか変換できなかったらcatchするのか

そんな場合なnullableがあれば外からみた関数の使い方はシンプルにできる
2017/05/25(木) 11:19:50.16ID:iRBHnHtq
だからnullオブジェクトを用意して使えって。
型安全でないnullなんか窓から投げ捨てろ。
2017/05/25(木) 11:20:19.76ID:5itOJ4P9
入力欄のオプショナルな項目か

携帯電話を持っていれば、その番号を記入して、みたいな奴か
2017/05/25(木) 11:26:27.67ID:/eJUHzjl
頭が時代についていってないようだなw
2017/05/25(木) 22:55:58.94ID:HKNQp0n4
元々はアドレスだったことを思い出せば功罪がわかる
2017/05/26(金) 05:24:14.29ID:Yn8sEtTn
>>196
同じようなことを考えたことがあったけど、「実行時エラーは悪」という考えにとらわれると、
間違った値(デフォルト値)のままエラー無しに処理が進んでしまうのは実行時エラーよりたちが悪い
ということを忘れがちになる。
>>197
使用頻度を考えるとnullオブジェクトをいちいち定義するよりnullチェックのほうがましな
変数の方が多いと思われる。
また、nullオブジェクトはどんな状況で使われても適切な結果を返すように実装しなければ、
上で述べたデフォルト値の問題を起こすことになるから、ミスのないデフォルトを
設定すること自体が難しい場合もあると思う(使用経験が少ないからわからない)。
2017/05/26(金) 07:38:30.45ID:Mhihnqx0
>>205
今時はなるべく完全コンストラクタを使って最初に一括で初期化し、
後は一切変更できないクラス設計が好まれるんだよ
C#は見境なく大量のgetsetプロパティを持つクラスを定義するバカが多いけど
207デフォルトの名無しさん
垢版 |
2017/05/26(金) 09:51:12.09ID:5tQUvAE5
kotlin/nativeに期待
208デフォルトの名無しさん
垢版 |
2017/05/26(金) 10:10:41.46ID:5tQUvAE5
nullチェックはもうちょっと痒いところまで手が届くといいね
たとえば if(a == 0 && b?. == "hoge") {...} で2つめはnullならパスしてくれる
みたいに書けたら便利
2017/05/26(金) 10:24:21.56ID:Heb9aC5z
nullを使わなければいいと思うよ
2017/05/26(金) 11:15:12.27ID:+T40nrdw
>>205
コンパイルエラーにできるものを実行時に処理するのは良くない設計だな。
型無しのnullを使うとコンパイルエラーに出来なくなる。
nullオブジェクトでも実行時エラーは処理できるから、必要ならそうすりゃいいし。
2017/05/26(金) 11:16:41.50ID:4K0JCbpq
いぐざくとりいい!
212デフォルトの名無しさん
垢版 |
2017/05/26(金) 12:12:06.77ID:5tQUvAE5
>>209 と、いわれても既存APIにはnullableだらけだからなぁ
2017/05/26(金) 12:28:01.13ID:Heb9aC5z
そのAPIの中はそれで良いと思う
今後作るAPIについては別に過去をなぞる必要はないとも思うよ
2017/05/26(金) 12:46:21.42ID:ZNc2U8qB
>>207
これってiosもうごくの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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