Kotlinat TECH
Kotlin - 暇つぶし2ch995:デフォルトの名無しさん
17/10/31 21:01:44.57 mFIgmMeH.net
ファイル入力の処理などの以下の処理が
while((line = br.readLine()) != null)
Kotlinだと、Assignments are not expressions, and only expressions are allowed in this context
のエラーになるんですが、Kotlinだとどう書いたらいいんでしょうか

996:デフォルトの名無しさん
17/10/31 21:38:42.83 kBfCDZdZ.net
>>982
let{ ... } が null を飛ばしてラムダ式を実行することができるのはあくまで副次作用に過ぎない
条件分岐させたいのなら素直に when か if で書くべき
>>983
File(path).forEachLine { line -> println(line) }

997:デフォルトの名無しさん
17/10/31 21:39:06.81 cTxMPZq4.net
>>982
普通に if 使って書けば良いのでは?

998:デフォルトの名無しさん
17/10/31 21:55:55.33 7/FAMo7N.net
>>982
?: run {}

999:デフォルトの名無しさん
17/10/31 22:06:34.40 mFIgmMeH.net
data?.let {
  ...
}?: {
  ...
}.invoke()
というのを見つけたんですが、?: run {}の方がいいんでしょうか

1000:デフォルトの名無しさん
17/10/31 22:10:44.21 BGaLFLkz.net
癖のある言語ですね・・・

1001:デフォルトの名無しさん
17/10/31 22:16:51.16 kBfCDZdZ.net
>>987
だから条件分岐は条件分岐として書いてくれ
letはもともと
val hoge = Hoge()
hoge.mes1()
hoge.mes2()
と書く代わりに
Hoge().let{ it.mes1(); it.mes2() }
と書くことができるという構造だ
条件分岐の代わりに使っていいものじゃない
ネット上で観測される彼らは「間違っている」
参考にしてはならない

1002:デフォルトの名無しさん
17/10/31 22:20:26.16 mFIgmMeH.net
えー。letってNULLチェック代わりに使うものじゃなかったの

1003:デフォルトの名無しさん
17/10/31 22:28:56.76 kBfCDZdZ.net
nullチェックは ?. の部分だ
letの中身が長くなればなるほど、それはletで書くべきではないということになる
今ここでこれ使うと1行で書けて変数に入れられるぜえ、とかだとapplyとか使うの考えるがまあその程度
letをnull回避として紹介してた人が今どんだけそれを日常的に使ってるかは個人的に興味があるよ
最初の紹介で使っただけなんじゃないかと思うんだよねえ
>>991超したので新スレおねがいします

1004:デフォルトの名無しさん
17/10/31 22:29:35.46 6MYbZ/26.net
Wikipediaとか参考文献にしてそう

1005:デフォルトの名無しさん
17/10/31 22:47:55.01 wyGoJvua.net
そもそものもともととして.?じゃ本当にnullが来たとき対処できないじゃないか
checkNotNull(value){ "valueがnullです" }
とかしないと不安にならないの

1006:デフォルトの名無しさん
17/10/31 23:34:28.34 E21Np2eC.net
それならKotlin使うのやめろよ

1007:デフォルトの名無しさん
17/10/31 23:39:23.74 u3Drl61J.net
>>993
何言ってんの

1008:デフォルトの名無しさん
17/10/31 23:49:38.22 BBLfUUwS.net
>>990
URLリンク(qiita.com)

1009:デフォルトの名無しさん
17/11/01 00:08:55.25 jxmKQQAl.net
次スレ
スレリンク(tech板)
2ch.net でないとうまく開かない専ブラの人は以下のURL
スレリンク(tech板)

1010:デフォルトの名無しさん
17/11/01 00:46:22.34 1EENXbRG.net
x.?let {} ?: run {} は letのとこのブロックがnull返すと x がnullじゃなくても run のブロック実行しちまうだろ
x.?also {} ?: run {} にしとけよ

1011:デフォルトの名無しさん
17/11/01 00:52:45.72 pp6VRjc6.net
>>993
?. を書いてメソッドチェーンを繋げなければならない状況自体、なにかおかしいからな
とっとと非nullを確定させるのが妥当
しかもわざわざスコープ内で覚えててくれるんだから、利用しない手はない

1012:デフォルトの名無しさん
17/11/01 02:02:04.51 x/3omok5.net
999

1013:デフォルトの名無しさん
17/11/01 02:02:35.06 x/3omok5.net
1000

1014:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 613日 0時間 16分 34秒

1015:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch