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

レス数が1000を超えています。これ以上書き込みはできません。
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
2017/10/31(火) 21:01:44.57ID:mFIgmMeH
ファイル入力の処理などの以下の処理が
while((line = br.readLine()) != null)
Kotlinだと、Assignments are not expressions, and only expressions are allowed in this context
のエラーになるんですが、Kotlinだとどう書いたらいいんでしょうか
2017/10/31(火) 21:38:42.83ID:kBfCDZdZ
>>981
let{ ... } が null を飛ばしてラムダ式を実行することができるのはあくまで副次作用に過ぎない
条件分岐させたいのなら素直に when か if で書くべき

>>982
File(path).forEachLine { line -> println(line) }
984デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:39:06.81ID:cTxMPZq4
>>981
普通に if 使って書けば良いのでは?
2017/10/31(火) 21:55:55.33ID:7/FAMo7N
>>981
?: run {}
2017/10/31(火) 22:06:34.40ID:mFIgmMeH
data?.let {
  ...
}?: {
  ...
}.invoke()
というのを見つけたんですが、?: run {}の方がいいんでしょうか
2017/10/31(火) 22:10:44.21ID:BGaLFLkz
癖のある言語ですね・・・
2017/10/31(火) 22:16:51.16ID:kBfCDZdZ
>>986
だから条件分岐は条件分岐として書いてくれ
letはもともと

val hoge = Hoge()
hoge.mes1()
hoge.mes2()

と書く代わりに

Hoge().let{ it.mes1(); it.mes2() }

と書くことができるという構造だ
条件分岐の代わりに使っていいものじゃない
ネット上で観測される彼らは「間違っている」
参考にしてはならない
2017/10/31(火) 22:20:26.16ID:mFIgmMeH
えー。letってNULLチェック代わりに使うものじゃなかったの
2017/10/31(火) 22:28:56.76ID:kBfCDZdZ
nullチェックは ?. の部分だ
letの中身が長くなればなるほど、それはletで書くべきではないということになる
今ここでこれ使うと1行で書けて変数に入れられるぜえ、とかだとapplyとか使うの考えるがまあその程度

letをnull回避として紹介してた人が今どんだけそれを日常的に使ってるかは個人的に興味があるよ
最初の紹介で使っただけなんじゃないかと思うんだよねえ

>>990超したので新スレおねがいします
2017/10/31(火) 22:29:35.46ID:6MYbZ/26
Wikipediaとか参考文献にしてそう
2017/10/31(火) 22:47:55.01ID:wyGoJvua
そもそものもともととして.?じゃ本当にnullが来たとき対処できないじゃないか
checkNotNull(value){ "valueがnullです" }
とかしないと不安にならないの
2017/10/31(火) 23:34:28.34ID:E21Np2eC
それならKotlin使うのやめろよ
2017/10/31(火) 23:39:23.74ID:u3Drl61J
>>992
何言ってんの
2017/10/31(火) 23:49:38.22ID:BBLfUUwS
>>989
https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e
996デフォルトの名無しさん
垢版 |
2017/11/01(水) 00:08:55.25ID:jxmKQQAl
次スレ

http://mevius.5ch.net/test/read.cgi/tech/1509462463/

2ch.net でないとうまく開かない専ブラの人は以下のURL

http://mevius.2ch.net/test/read.cgi/tech/1509462463/
2017/11/01(水) 00:46:22.34ID:1EENXbRG
x.?let {} ?: run {} は letのとこのブロックがnull返すと x がnullじゃなくても run のブロック実行しちまうだろ
x.?also {} ?: run {} にしとけよ
2017/11/01(水) 00:52:45.72ID:pp6VRjc6
>>992
?. を書いてメソッドチェーンを繋げなければならない状況自体、なにかおかしいからな
とっとと非nullを確定させるのが妥当
しかもわざわざスコープ内で覚えててくれるんだから、利用しない手はない
2017/11/01(水) 02:02:04.51ID:x/3omok5
999
2017/11/01(水) 02:02:35.06ID:x/3omok5
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 613日 0時間 16分 34秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。