X



Kotlin [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0972デフォルトの名無しさん
垢版 |
2017/10/29(日) 19:11:11.42ID:6hfILvPI
さっき新宿の紀伊國屋書店行ったらKotlinイン・アクションもう置いてあったよ。
ということは多分大きい本屋ならもう売ってると思う。
0974デフォルトの名無しさん
垢版 |
2017/10/29(日) 22:04:20.61ID:oFRxn/Jf
>>973
まだパラパラめくって見ただけなので何とも言えないが、詳しく一通り書いてあるように見える。
0975デフォルトの名無しさん
垢版 |
2017/10/30(月) 00:56:22.26ID:/vdlmG2A
初めてのまともな日本語の本でしょ
あのクソみたいなエバンジェリスト本(笑)をやっと駆逐できるな
0979デフォルトの名無しさん
垢版 |
2017/10/30(月) 22:37:30.38ID:OufZdVP7
ここは!
あなたの!
日記帳!

Javaを読めないとしんどいから、もしまだ知らないなら並行作業でちょっとずつやるといいよ
今からやっておくとだいたいKotlinわかったころに何かやりたくなっても「あっこれ進研ゼミでやったやつだ!」となって捗ること請け合い
0980デフォルトの名無しさん
垢版 |
2017/10/30(月) 23:00:21.71ID:pVIch9qW
>>979
応援ありがとうございます。
Javaは少しだけやりました。
一応C#は使えるので、
kotlinやりながらJavaも覚えたいと思います。
0981デフォルトの名無しさん
垢版 |
2017/10/31(火) 20:53:53.80ID:mFIgmMeH
data?.let {
  ...
}
でdataがNULLじゃないときだけ処理を実行できることは分かりました。
これにdataがNULLのときの処理も追加したい場合はどう書いたらいいんでしょうか
data?.let {
  ...
}?: {
}
みたいに書けないです。
0982デフォルトの名無しさん
垢版 |
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だとどう書いたらいいんでしょうか
0983デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:38:42.83ID:kBfCDZdZ
>>981
let{ ... } が null を飛ばしてラムダ式を実行することができるのはあくまで副次作用に過ぎない
条件分岐させたいのなら素直に when か if で書くべき

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

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

と書く代わりに

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

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

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

>>990超したので新スレおねがいします
0992デフォルトの名無しさん
垢版 |
2017/10/31(火) 22:47:55.01ID:wyGoJvua
そもそものもともととして.?じゃ本当にnullが来たとき対処できないじゃないか
checkNotNull(value){ "valueがnullです" }
とかしないと不安にならないの
0997デフォルトの名無しさん
垢版 |
2017/11/01(水) 00:46:22.34ID:1EENXbRG
x.?let {} ?: run {} は letのとこのブロックがnull返すと x がnullじゃなくても run のブロック実行しちまうだろ
x.?also {} ?: run {} にしとけよ
0998デフォルトの名無しさん
垢版 |
2017/11/01(水) 00:52:45.72ID:pp6VRjc6
>>992
?. を書いてメソッドチェーンを繋げなければならない状況自体、なにかおかしいからな
とっとと非nullを確定させるのが妥当
しかもわざわざスコープ内で覚えててくれるんだから、利用しない手はない
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 613日 0時間 16分 34秒
レス数が1000を超えています。これ以上書き込みはできません。

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