JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
Kotlin 5
https://mevius.5ch.net/test/read.cgi/tech/1544268581/
探検
Kotlin 6
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/06/22(土) 15:59:57.23ID:zj+KJbMh341デフォルトの名無しさん
2019/10/09(水) 21:58:29.86ID:+IXxZ8i9 Swiftのコードを移植しやすくするために、プロトコルを移植する術を用意して欲しいな
342デフォルトの名無しさん
2019/10/10(木) 07:03:41.74ID:giyEmNIS >>334
スマホや、インターネット使ってる癖に?w
スマホや、インターネット使ってる癖に?w
343デフォルトの名無しさん
2019/10/10(木) 09:44:34.71ID:f2z6TkRs344デフォルトの名無しさん
2019/10/10(木) 09:47:43.02ID:f2z6TkRs ま、しかし、大人のIQって一体何を基準にして出すのか謎だな。子供ならまだわかるんだが。
345デフォルトの名無しさん
2019/10/10(木) 09:58:04.45ID:yMym0WfO IQ = 偏差値 x 2
346デフォルトの名無しさん
2019/10/10(木) 10:06:40.36ID:qMpodnOz347デフォルトの名無しさん
2019/10/10(木) 12:54:39.50ID:f2z6TkRs >>345
そうするって決まってるの?どこで決めた?
そうするって決まってるの?どこで決めた?
348デフォルトの名無しさん
2019/10/10(木) 13:15:24.31ID:3FRPhBpT >>347
そう固い頭だと色々無理ですわ
そう固い頭だと色々無理ですわ
349デフォルトの名無しさん
2019/10/10(木) 13:24:45.83ID:/UOoEr+O 偏差値50でIQ100
50前後だと合ってるが端の方は違うだろうな
50前後だと合ってるが端の方は違うだろうな
350デフォルトの名無しさん
2019/10/10(木) 21:06:55.89ID:f2z6TkRs351デフォルトの名無しさん
2019/10/10(木) 21:14:30.21ID:Dw9sQNQ5 >>345
俺メンサに入れるかも
俺メンサに入れるかも
352デフォルトの名無しさん
2019/10/10(木) 22:10:25.98ID:l19Np2ka >>346
ぱっと見ただけでどの言語のコードかわかるので、悪い話ばかりではない。
ぱっと見ただけでどの言語のコードかわかるので、悪い話ばかりではない。
353デフォルトの名無しさん
2019/10/23(水) 00:35:02.53ID:VlKG99wH kotlinがサーバサイドで動く日は来るのだろうか
354デフォルトの名無しさん
2019/10/23(水) 02:08:32.92ID:dddyYjX9 とっくに動いてるけど?
355デフォルトの名無しさん
2019/10/23(水) 07:52:04.30ID:5Hzic27k うちの
356デフォルトの名無しさん
2019/10/23(水) 13:23:08.82ID:9StfI0ul サーバかどうかに関わらず動くと言えば動く
357デフォルトの名無しさん
2019/10/23(水) 13:25:26.53ID:9StfI0ul ていうかだな、VMのレベルでJavaとの互換性あるんだからJavaでできることはなんでもできるよな。
互換性というかJavaバイトコードそのままなわけだが。
互換性というかJavaバイトコードそのままなわけだが。
358デフォルトの名無しさん
2019/10/24(木) 23:51:39.67ID:RhNVJpHw 何で誰もscalaのライブラリ移植してくれないんだ?
359デフォルトの名無しさん
2019/10/25(金) 08:03:33.95ID:h86JIRQS >>358
JavaからScalaを呼び出せるはずだから、Kotlinからも呼び出せるのでは?
JavaからScalaを呼び出せるはずだから、Kotlinからも呼び出せるのでは?
360デフォルトの名無しさん
2019/10/29(火) 19:28:43.34ID:/JOXqSLR bit演算子がand/orで、conditionalの方が&&/||って紛らわしいな。
361デフォルトの名無しさん
2019/10/30(水) 09:41:04.16ID:C/RG5q83362デフォルトの名無しさん
2019/10/30(水) 10:21:31.19ID:boKIoRF+ 単語と記号の混在が紛らわしいって話でしょ
VB系がAndとAndAlsoで、C系が&と&&で一貫しているのに対して、Kotlinはandと&&の組み合わせを選んでて言われてみると少し変
andはメソッドで&&は演算子だから差別化したかったというなら理解できるが、andを演算子オーバーロードしなかったのは何でだろうな
notはしてるのに
VB系がAndとAndAlsoで、C系が&と&&で一貫しているのに対して、Kotlinはandと&&の組み合わせを選んでて言われてみると少し変
andはメソッドで&&は演算子だから差別化したかったというなら理解できるが、andを演算子オーバーロードしなかったのは何でだろうな
notはしてるのに
363デフォルトの名無しさん
2019/10/30(水) 10:32:29.86ID:C/RG5q83 VBではAndもAndAlsoも、条件分岐用(BOOL系)で、AndAlsoが、
C での&&相当なんですね。x And y も C のx && yに近いが、
xが偽の場合でもyを評価してしまうところが && と違う。
そこで && と同じ動作を行わせるために導入されたのが AndAlsoと。
C での&&相当なんですね。x And y も C のx && yに近いが、
xが偽の場合でもyを評価してしまうところが && と違う。
そこで && と同じ動作を行わせるために導入されたのが AndAlsoと。
364デフォルトの名無しさん
2019/10/30(水) 16:18:46.97ID:1J5CWeWV Pythonは、kotlinとは反対だな。
and/orはいかにも文章的で、こっちの方がしっくりくる。
and/orはいかにも文章的で、こっちの方がしっくりくる。
365デフォルトの名無しさん
2019/10/30(水) 17:38:05.90ID:C/RG5q83 それに、&& や || は長さも & や | より長いので、少し長い and, or と対応し易い。
後やはり、伝統的なBASIC言語との互換性は重要だ。そっちを覚えている人は
世界では沢山入るはず。特にアメリカ。
後やはり、伝統的なBASIC言語との互換性は重要だ。そっちを覚えている人は
世界では沢山入るはず。特にアメリカ。
366デフォルトの名無しさん
2019/10/30(水) 17:38:32.15ID:C/RG5q83367デフォルトの名無しさん
2019/10/30(水) 20:40:57.63ID:6r1QZ6yg and, orは値によっては計算を評価しないというifの役目もしてるから
ほかの演算子と一緒くたにするのは気分が悪かったのかもしれない
とおもったけど&&使ってもandと評価される項目一緒だっけ
ほかの演算子と一緒くたにするのは気分が悪かったのかもしれない
とおもったけど&&使ってもandと評価される項目一緒だっけ
368デフォルトの名無しさん
2019/10/31(木) 06:45:28.23ID:GYAqAxt3 Kotlinの言語開発者は、andとorは拡張関数で実装すればKotlinの文法の範囲内で文章的に書けると思ったのかも。
ただ、>>367が指摘するように拡張関数のand, orは短絡評価がないから
&&, ||とは同じ動作にならない上にパフォーマンスも若干落ちるという残念な仕様に。
将来的に短絡評価するアノテーションとかを作れば何とか出来ると思っているのかいないのか。
ただ、>>367が指摘するように拡張関数のand, orは短絡評価がないから
&&, ||とは同じ動作にならない上にパフォーマンスも若干落ちるという残念な仕様に。
将来的に短絡評価するアノテーションとかを作れば何とか出来ると思っているのかいないのか。
369デフォルトの名無しさん
2019/10/31(木) 07:22:01.32ID:HKEmMyl3 >>368
短絡評価しないから残念というものではなく副作用を考えて使い分けるものだよ
だから多くの言語ではわざわざ2種類用意されてる
前段については同意だがやはりなぜ演算子オーバーロードしなかったのか疑問
短絡評価しないから残念というものではなく副作用を考えて使い分けるものだよ
だから多くの言語ではわざわざ2種類用意されてる
前段については同意だがやはりなぜ演算子オーバーロードしなかったのか疑問
370デフォルトの名無しさん
2019/10/31(木) 11:07:41.22ID:JXLI+jKB ビット演算と論理演算の違いって>>360が書いてるやろ
ビット演算を短絡評価のない論理演算と捉えてるやつが多くてオシッコちびるわ
ビット演算を短絡評価のない論理演算と捉えてるやつが多くてオシッコちびるわ
371デフォルトの名無しさん
2019/10/31(木) 19:32:54.61ID:ZaVwx2RY kotlin使ったことないもので
372デフォルトの名無しさん
2019/10/31(木) 20:48:39.66ID:rgtTn2y8 ビット演算と論理演算の違いはC C# Javaとかでも同じっすよ
言語仕様を広げたくなかったんじゃね
Kotlinのandとかは言語仕様に無くて単なる標準ライブラリの関数扱いだし
言語仕様を広げたくなかったんじゃね
Kotlinのandとかは言語仕様に無くて単なる標準ライブラリの関数扱いだし
373デフォルトの名無しさん
2019/10/31(木) 20:58:37.80ID:IuiVo8Vq >>371
ただちに使いなさい。
ただちに使いなさい。
374デフォルトの名無しさん
2019/10/31(木) 22:36:23.90ID:GYAqAxt3375デフォルトの名無しさん
2019/11/01(金) 00:09:01.18ID:SSpVj4+E >>374
notやplusは演算子オーバーロードしてるのにandがしてないのが疑問だと言っているんだよ
notやplusは演算子オーバーロードしてるのにandがしてないのが疑問だと言っているんだよ
376デフォルトの名無しさん
2019/11/01(金) 01:05:00.03ID:fA7q3dtP377デフォルトの名無しさん
2019/11/01(金) 01:21:46.87ID:RfnyKZTx 「演算子オーバーロードしなかった」の意味がよくわからない
&演算子が無いことの話なのか、オーバーロード出来るかどうかの話なのか
後者なら単なる関数なので普通に出来るけど
class A(val s:String) { override fun toString() = s }
infix fun A.and(o:A) = A("${this.s}∩${o.s}")
fun main(args: Array<String>) = println( A("x") and A("y") )
&演算子が無いことの話なのか、オーバーロード出来るかどうかの話なのか
後者なら単なる関数なので普通に出来るけど
class A(val s:String) { override fun toString() = s }
infix fun A.and(o:A) = A("${this.s}∩${o.s}")
fun main(args: Array<String>) = println( A("x") and A("y") )
378デフォルトの名無しさん
2019/11/01(金) 09:34:45.45ID:zrbJp7o3 演算子がないことを、演算子オーバーロードしてないと言ってるんだろう
https://github.com/Kotlin/KEEP/issues/142
中の人は演算子提供するのに乗り気じゃなさそうだけどそのうち追加されるんじゃないか
shl/shrとかわかりにくいしand/orも他言語から来ると思考ノイズでしかない
https://github.com/Kotlin/KEEP/issues/142
中の人は演算子提供するのに乗り気じゃなさそうだけどそのうち追加されるんじゃないか
shl/shrとかわかりにくいしand/orも他言語から来ると思考ノイズでしかない
379デフォルトの名無しさん
2019/11/02(土) 17:53:52.29ID:QgMrWwpO ビット演算するとき、|=、&=って激しく便利だし頻出だと思うんだけどなぁ。
380デフォルトの名無しさん
2019/11/02(土) 18:52:11.73ID:5tts/hNl そもそも複数のbooleanで扱うべきフラグをビット演算で1つにしてるAPI設計が良くない説
381デフォルトの名無しさん
2019/11/03(日) 06:01:49.39ID:1XdbflyH382デフォルトの名無しさん
2019/11/08(金) 01:15:52.84ID:cpVwQa3m しーん
383デフォルトの名無しさん
2019/11/16(土) 20:04:36.15ID:IPxvB3iz javaラーがコトリンに乗り換える勉強するのにどれくらい移行期間かかります?
384デフォルトの名無しさん
2019/11/16(土) 20:26:59.99ID:t3f2p1SX 1年働く
385デフォルトの名無しさん
2019/11/16(土) 20:43:38.98ID:C0dcrxXu >>383
君の全角半角のセンスからするとだな
君の全角半角のセンスからするとだな
386デフォルトの名無しさん
2019/11/16(土) 22:11:24.92ID:gv6Xc8ej 超天才でスーパーな人なら入門書パラパラめくって眺めて30分ぐらいかな
387デフォルトの名無しさん
2019/11/16(土) 22:13:58.74ID:gv6Xc8ej 1時間後にはもっと凄い新言語に閃いて作りはじめる
388デフォルトの名無しさん
2019/11/16(土) 23:33:33.74ID:uUrUP5Ld java -> kotlin変換しますか?
Y?/N?
Y -> 数秒まて
Y?/N?
Y -> 数秒まて
389デフォルトの名無しさん
2019/11/17(日) 00:14:20.35ID:JQ6H4Wt1 それだと !! がたくさん残るしそもそもビルド通らない
390デフォルトの名無しさん
2019/11/17(日) 09:48:27.71ID:fq5Zb79J そっから手直しすればいいんじゃない??
無駄が多いし効率も悪いけど…
無駄が多いし効率も悪いけど…
391デフォルトの名無しさん
2019/11/17(日) 11:45:54.92ID:os2yIBUt 3日で慣れる
392デフォルトの名無しさん
2019/11/17(日) 17:31:59.24ID:8gWobnsK あれ?forループで変数インクリメントするようなのできねーじゃん。なに?while使ってやれっての?えー!
ってなってから、なーんだ (a..b).forEach { } でやりゃあいいんじゃん。
と、気づくまでに3日以上掛かった。
ってなってから、なーんだ (a..b).forEach { } でやりゃあいいんじゃん。
と、気づくまでに3日以上掛かった。
393デフォルトの名無しさん
2019/11/17(日) 17:34:56.22ID:8gWobnsK ていうか for (n in a..b) でもいいのだが、a..b が Range になっててあとはコンパイラが自動でうまいことやってくれる事に気づかなかった。
394デフォルトの名無しさん
2019/11/17(日) 23:38:24.23ID:moRzMRqx ひとまず小一時間感覚で書いてみるのは良いとしても
言語リファレンスを一通り流し読みする時間をどこかで確保しないとな
https://kotlinlang.org/docs/reference/idioms.html
言語リファレンスを一通り流し読みする時間をどこかで確保しないとな
https://kotlinlang.org/docs/reference/idioms.html
395デフォルトの名無しさん
2019/11/19(火) 06:21:31.09ID:bEq52YpT !!ってダメなのか?
むしろ入れて解決してるんだが…w
むしろ入れて解決してるんだが…w
396デフォルトの名無しさん
2019/11/19(火) 09:50:11.74ID:LM0oqXyj !!は全部消さないとダメ
397デフォルトの名無しさん
2019/11/19(火) 09:55:32.18ID:c65LTQ+s >>395
ダメじゃないけど沢山あると嫌な感じ
ダメじゃないけど沢山あると嫌な感じ
398デフォルトの名無しさん
2019/11/19(火) 10:47:58.28ID:DczGG2/f Kotlin 1.3.60 リリース
https://blog.jetbrains.com/kotlin/2019/11/kotlin-1-3-60-released/
https://blog.jetbrains.com/kotlin/2019/11/kotlin-1-3-60-released/
399デフォルトの名無しさん
2019/11/19(火) 14:30:37.08ID:trU3CZAC なぜどうしてもそこに必要なのかを説明できない!!は書いてはならない
あとあと絶対にそこでコード的にまたは仕様的にバグるから、むしろ遠回りになる
あとあと絶対にそこでコード的にまたは仕様的にバグるから、むしろ遠回りになる
400デフォルトの名無しさん
2019/11/19(火) 16:25:17.02ID:bEq52YpT null許容変数がnullになるかもしれないから!!なんじゃないの?
そういう認識なんだが
そういう認識なんだが
401デフォルトの名無しさん
2019/11/19(火) 16:29:22.93ID:DczGG2/f val a = ThreadLocal<String>().get()
val b:String = a //暗黙の a!!
val b:String = a //暗黙の a!!
402デフォルトの名無しさん
2019/11/19(火) 19:32:30.25ID:OgKqA1p2 !!は全部消すべき
403デフォルトの名無しさん
2019/11/19(火) 19:39:12.55ID:bMvJvF/Q404デフォルトの名無しさん
2019/11/19(火) 21:21:13.73ID:c65LTQ+s 毛
405デフォルトの名無しさん
2019/11/19(火) 23:23:22.22ID:bEq52YpT >>403
nullになるかも?なだけで実行順を追っていくとならないことが多いからそのままにしている
必要なら対策するけど、ほとんどの場合は実行タイミングに何か値が入ってる
変に怖れて潔癖にならない方がいい
nullになるかも?なだけで実行順を追っていくとならないことが多いからそのままにしている
必要なら対策するけど、ほとんどの場合は実行タイミングに何か値が入ってる
変に怖れて潔癖にならない方がいい
406デフォルトの名無しさん
2019/11/20(水) 00:18:44.73ID:Cb5VPrea !! は、絶対に、null にならない場合だけに使うべし!
notnull
強制キャストと同じ
notnull
強制キャストと同じ
407デフォルトの名無しさん
2019/11/20(水) 00:47:14.79ID:ENHG5n4o 例外が発生するから!!が良くないと考えているならそれはnull安全を履き違えている
重要なのは区別することで、どう処理するかは要件次第
処理のタイミングで非nullであるべき変数なら
ガード節、requireNotNull、!! などによって早期にスマートキャストすべき
そのような箇所で不用意にセーフコール(?.)を使うことはいわゆるエラーの隠蔽に繋がる
nullが正常系の内ならもちろんセーフコールなりエルビスなりで問題無い
重要なのは区別することで、どう処理するかは要件次第
処理のタイミングで非nullであるべき変数なら
ガード節、requireNotNull、!! などによって早期にスマートキャストすべき
そのような箇所で不用意にセーフコール(?.)を使うことはいわゆるエラーの隠蔽に繋がる
nullが正常系の内ならもちろんセーフコールなりエルビスなりで問題無い
408デフォルトの名無しさん
2019/11/20(水) 00:51:02.81ID:I+/vz2hc !!はforce unwrapと呼ぶべし!!
!!演算子に名前を付けない言語は滅ぶべし!!
!!演算子に名前を付けない言語は滅ぶべし!!
409デフォルトの名無しさん
2019/11/20(水) 00:53:35.65ID:ENHG5n4o410デフォルトの名無しさん
2019/11/20(水) 01:40:06.34ID:We9TyGj3 例えば画像Aを表示する座標x,y
初期値を画面外の-500,-500にしておけば!!は消せるけど
画面外に表示ってリソースの無駄
これを良しとするやつは複数の画像を画面外に常に表示している
逆にメモリ足らなくなって落ちない?
使わない場合はnullでよくね?
読込みに時間かかるなら初期値設定するのもありだけど
あくまで重い画像を複数使用する例なんだけどnullを悪としてとらえず利用しようよ
上記の理由により、!!潔癖症はただ邪魔なだけ
初期値を画面外の-500,-500にしておけば!!は消せるけど
画面外に表示ってリソースの無駄
これを良しとするやつは複数の画像を画面外に常に表示している
逆にメモリ足らなくなって落ちない?
使わない場合はnullでよくね?
読込みに時間かかるなら初期値設定するのもありだけど
あくまで重い画像を複数使用する例なんだけどnullを悪としてとらえず利用しようよ
上記の理由により、!!潔癖症はただ邪魔なだけ
411デフォルトの名無しさん
2019/11/20(水) 02:09:26.97ID:6LF6wg+P !!を使わなくても安全に実装できるのにあえて!!を使うのは頭が悪いですと言っているようなもの
412デフォルトの名無しさん
2019/11/20(水) 07:14:57.99ID:U5Gi9XNc ファイルヘッダとかにマジック定数あるが、これを表現するには
val hoge = arrayOf('a','1').map { it.toByte() }.toByteArray()
みたいな悲しいことしないといけないのでしょうか?
それとkotlinで一般的なバイトバッファを表現するにはByteArrayつかっておけば間違いなないでしょうか?
val hoge = arrayOf('a','1').map { it.toByte() }.toByteArray()
みたいな悲しいことしないといけないのでしょうか?
それとkotlinで一般的なバイトバッファを表現するにはByteArrayつかっておけば間違いなないでしょうか?
413デフォルトの名無しさん
2019/11/20(水) 07:18:15.00ID:U5Gi9XNc 今はJVM環境で使ってますが、一応コード書くときに、特定のプラットホームに依存しないように書けるとこは書こうと思います
ちょっとつっぱしてByteArrayじゃなくてexperiment なUByteArrayを使おうと思いますが
ちょっとつっぱしてByteArrayじゃなくてexperiment なUByteArrayを使おうと思いますが
414デフォルトの名無しさん
2019/11/20(水) 07:47:32.01ID:ENHG5n4o415デフォルトの名無しさん
2019/11/20(水) 09:35:14.21ID:kKZK+bE1 >>410
使わない場合はnull、っていうケースは文字通りガード節や?.を使って
nullならなにもしない場合、と同義なのでは
!!を使うべき例としてはピンとこない
!!を使っている関数は引数つまり関数の仕様としては一見null許容型だけど、実装としてはnullを拒絶する不整合がある
何らかの事情で回避が難しいときの苦肉の策で、多用するのは作りが悪いように思う
あとは関数内で既に非nullであることが保証されてるパスの中にいる場合の簡略化で使うか
でもこれを多用するようなら関数が長すぎるという問題を暗に抱えていたり
安全や可読性よりも手抜きを選ぶ悪癖の疑いを感じる
使わない場合はnull、っていうケースは文字通りガード節や?.を使って
nullならなにもしない場合、と同義なのでは
!!を使うべき例としてはピンとこない
!!を使っている関数は引数つまり関数の仕様としては一見null許容型だけど、実装としてはnullを拒絶する不整合がある
何らかの事情で回避が難しいときの苦肉の策で、多用するのは作りが悪いように思う
あとは関数内で既に非nullであることが保証されてるパスの中にいる場合の簡略化で使うか
でもこれを多用するようなら関数が長すぎるという問題を暗に抱えていたり
安全や可読性よりも手抜きを選ぶ悪癖の疑いを感じる
416デフォルトの名無しさん
2019/11/20(水) 11:41:13.79ID:NJaF4OnZ !! null即エラー演算子。
force unwrapでは全く本質を言ってない。
force unwrapでは全く本質を言ってない。
417デフォルトの名無しさん
2019/11/20(水) 12:48:32.17ID:RdkdotSG418デフォルトの名無しさん
2019/11/20(水) 14:43:02.05ID:6LF6wg+P !!を使うやつとは一緒に仕事したくない
419デフォルトの名無しさん
2019/11/20(水) 15:16:56.32ID:zV5Z2B9p なんだと!!
420デフォルトの名無しさん
2019/11/20(水) 15:29:37.98ID:Y9hbFaQz >>419
ちょっとワロタw
ちょっとワロタw
421デフォルトの名無しさん
2019/11/20(水) 17:12:40.65ID:gQNT2Wxf val なんだと: Int? = null
422デフォルトの名無しさん
2019/11/20(水) 22:37:14.64ID:F7b4EQq2423デフォルトの名無しさん
2019/11/20(水) 23:09:14.16ID:V5o6b7gh 絶対nullにならないなら型変えるべき
424デフォルトの名無しさん
2019/11/20(水) 23:19:54.39ID:Cb5VPrea >>410
もし遅延初期化、lateinit が使えるなら、その方がよい
もし遅延初期化、lateinit が使えるなら、その方がよい
425デフォルトの名無しさん
2019/11/21(木) 00:03:38.40ID:OWTu/Eih java のライブラリの @Nullable とか、json で条件によって null / not null が切り替わるプロパティとか
426デフォルトの名無しさん
2019/11/21(木) 02:18:34.58ID:TLoSEVN8 !!使うやつは馬鹿でFA
427デフォルトの名無しさん
2019/11/21(木) 03:55:49.74ID:Bt7t64ET ならなんであるんだろう
428デフォルトの名無しさん
2019/11/21(木) 04:20:54.23ID:UJdhtJJC あたたたたたたたひでぶ!!
429デフォルトの名無しさん
2019/11/21(木) 06:28:21.69ID:87sZA2Me >>427
nullableな値を返す外部の関数について、文脈上nullが返らないことが保証できる場合にまで
null対応を書くのは、可読性やパフォーマンスの上で無駄が多いからだと思う。
特にJava(あるいはJavascriptやnative)由来の関数とか。
nullableな値を返す外部の関数について、文脈上nullが返らないことが保証できる場合にまで
null対応を書くのは、可読性やパフォーマンスの上で無駄が多いからだと思う。
特にJava(あるいはJavascriptやnative)由来の関数とか。
430デフォルトの名無しさん
2019/11/21(木) 06:34:18.07ID:87sZA2Me431デフォルトの名無しさん
2019/11/21(木) 06:56:28.51ID:SWfOk2xI そのkotlinの存在意義ぶち壊す特異性からしても、どーしても仕方なく使うものであるのだけど
エラー消すおまじないみたいなノリで初心者から中級者が使うので戒められている次第
あと、感染するんだコレ
エラー消すおまじないみたいなノリで初心者から中級者が使うので戒められている次第
あと、感染するんだコレ
432デフォルトの名無しさん
2019/11/21(木) 07:43:43.53ID:rXpcOZh/433デフォルトの名無しさん
2019/11/21(木) 08:03:18.32ID:tRt1kz+E 1.3.60出てたから久しぶりにkotlin native試してみたらhello,worldのコンパイル時間が更に伸びてた!
10秒→16秒!
何か早くする方法ないの?
10秒→16秒!
何か早くする方法ないの?
434デフォルトの名無しさん
2019/11/21(木) 08:04:59.80ID:SWfOk2xI >>432
値チェックに使う字面だからいいのでは
値チェックに使う字面だからいいのでは
435デフォルトの名無しさん
2019/11/21(木) 08:06:53.77ID:Bt7t64ET 実行タイミングが来るまで置いておくだけの関数の中で使う変数は、その関数を実行する前までnullでいいよな?
そういう理由で!!のままにしてるんだけど!!潔癖以外の意見が聞きたい、ロジカルな理由を
その会社の規約なら!!使わないけど
使っていけないならそもそもビルド通らんだろ
そういう理由で!!のままにしてるんだけど!!潔癖以外の意見が聞きたい、ロジカルな理由を
その会社の規約なら!!使わないけど
使っていけないならそもそもビルド通らんだろ
436デフォルトの名無しさん
2019/11/21(木) 08:38:35.83ID:9TFt1oIy >>435
型安全が破綻するのでnullobject定義して使っとけ。
型安全が破綻するのでnullobject定義して使っとけ。
437デフォルトの名無しさん
2019/11/21(木) 08:53:15.49ID:0YdMrNda438デフォルトの名無しさん
2019/11/21(木) 08:54:35.85ID:Vn+a4ljF 状況が限定されるが、あるクラスがnull相当の状態をとりうるメンバ変数を持っていて
その値がnullのときに呼んだらバグとして例外を出したいメソッドがあるときは
!!を使ってもいいかなと思う
requireNonNullのほうが可読性と保守性でベターだけど本質的には大差ない
残念な!!の使い方ではないんですよと表明している程度(それが重要でもあるわけだが)
NullObjectパターンは必ずしも良い置き換えにはならない
NullObjectかどうか忘れず判定してIllegalStateExcptionを投げなければならない状況になるくらいなら
nullチェックを言語仕様で強制されるほうが手が掛からず安全性も高い
上でも言われていたが例外も何も出ずにバグがしれっと埋もれるほうが危険
その値がnullのときに呼んだらバグとして例外を出したいメソッドがあるときは
!!を使ってもいいかなと思う
requireNonNullのほうが可読性と保守性でベターだけど本質的には大差ない
残念な!!の使い方ではないんですよと表明している程度(それが重要でもあるわけだが)
NullObjectパターンは必ずしも良い置き換えにはならない
NullObjectかどうか忘れず判定してIllegalStateExcptionを投げなければならない状況になるくらいなら
nullチェックを言語仕様で強制されるほうが手が掛からず安全性も高い
上でも言われていたが例外も何も出ずにバグがしれっと埋もれるほうが危険
439デフォルトの名無しさん
2019/11/21(木) 09:05:08.85ID:OWTu/Eih require と check の使い分けちゃんとしとけよ
440デフォルトの名無しさん
2019/11/21(木) 10:47:03.33ID:iVxfes4g >>438
オモチャだから発売日が気になっちゃう精神やん
オモチャだから発売日が気になっちゃう精神やん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】麻生太郎さん、オムツをしていた。晋さん…ここにいたんだね… [731544683]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
