Androidアプリ開発のためのKotlin実践プログラミング http://amzn.asia/4GO28m20279デフォルトの名無しさん2017/12/05(火) 07:55:54.23ID:y4Wcjyaa KotlinはAndroidが対応したってだけでそのためだけに使う人は少数派やろ 0280デフォルトの名無しさん2017/12/05(火) 09:05:47.31ID:lXQHSkZJ いやあ、しかし楽にはなりそうだからねえ、流行ると思うけどねえ。 0281デフォルトの名無しさん2017/12/05(火) 09:10:49.28ID:AdXR2ViJ なんだ秀和システムか 0282デフォルトの名無しさん2017/12/05(火) 09:18:48.22ID:jRPOQw5f なぁーんだ 0283デフォルトの名無しさん2017/12/05(火) 09:23:34.28ID:LGaiibyR>>260 Adobe readerじゃダメなの? 0284デフォルトの名無しさん2017/12/10(日) 18:15:48.13ID:kwrbJZOe>>278 これってアフィリンクなの? https://www.amazon.co.jp/dp/479805366X/ref=cm_sw_r_cp_ep_dp_UlxjAbA4FDHWD0285デフォルトの名無しさん2017/12/10(日) 21:26:30.38ID:x9bbNSCq cmで始まってdpで終わってるからどこかのレビューページから飛んだURLだと思うんだが なにもしないとcm_cr_dpなんだけどな cpが入ってるってことは「この商品を見た後に買っている」を1回表示してるのかもしれない 0286デフォルトの名無しさん2017/12/10(日) 21:39:59.60ID:J3Wk9KR3 cm_sw_ ... _dp はシェア用URLの生成形式だね ツイッター用ならcl_twで超わかりやすいんだがr_cp_epはなんだろう 0287デフォルトの名無しさん2017/12/11(月) 06:07:16.82ID:Vu+apVrY>>284 それはわからんが>>278のリンクはAmazonで「シェアする」のリンク使って出てきたURLだよ。誰がやっても同じになると思う。 0288デフォルトの名無しさん2017/12/11(月) 23:34:54.18ID:5wm6MhH6 lateinit var value: Int って書いたら'lateinit' modifier is not allowed on properties of primitive typesのエラーになるんですが、 どう書き直したらいいんでしょうか
var value: Int? = null って書いて、 if (value == null) { value = initValue() } ってするしかないんでしょうか。 0289デフォルトの名無しさん2017/12/11(月) 23:52:46.83ID:1muH/1X2 プリミティブ型にlateinitは必要ないからつけられない 0290デフォルトの名無しさん2017/12/11(月) 23:53:52.52ID:jDa4LF1V>>288 試してないけど var var value by { var value: Int } ではだめ? 0291デフォルトの名無しさん2017/12/11(月) 23:55:33.20ID:Q0kTyulb で、一番いい入門書は? 0292デフォルトの名無しさん2017/12/11(月) 23:55:50.41ID:jDa4LF1V>>290 ペーストに失敗したorz var value by { initValue() } 0293デフォルトの名無しさん2017/12/11(月) 23:58:47.24ID:jDa4LF1V>>291 自分はスタートブックを推す。 Javaを知っていることを前提としない入門書の存在を自分は知らない。 0294デフォルトの名無しさん2017/12/12(火) 00:03:08.61ID:UCmbxn8n>>292 慌てて修正したらlazy落としていたorz orz var value by lazy { initValue() } 連投申し訳ない。これで違っていたら目も当てられんが、それもすみません。と誤っておきます。 0295デフォルトの名無しさん2017/12/12(火) 00:09:53.79ID:LMcO3gTk>>289 答えはこれです 0296デフォルトの名無しさん2017/12/12(火) 00:45:23.57ID:GdvZGdbs>>291 Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
で、どーしても遅延初期化を使いたいなら var value: Int by Delegates.notNull<Int>() とか書くと形式上遅延初期化になる。むろん二度手間だが、遅延初期化という目的は一応達成される こんなごっついことせずに素直に0とか入れておいたほうがいいんじゃねーかなと思った感覚は正しい。0入れとけ0
あとはちらっと出てたけどby lazyで val value: Int by lazy { initValue() } と書くことでも一応達成される。こっちだとvalで書けるので好まれることが多いみたいだね 0300デフォルトの名無しさん2017/12/12(火) 06:12:22.97ID:GdvZGdbs 長澤太郎の本に書いてあるけど、
■Kotlin fun f(): Int { run { val a = "a" if(a.length < 10){ return 1 } // runでなくfから抜ける } return 2 //ここには来ない } 0321デフォルトの名無しさん2017/12/19(火) 10:28:08.70ID:f5KBk+Xr fun fcall(f1: () -> Int): Int = f1()
fun f(){ val a = fcall { val a = "a" if(a.length < 10){ return@fcall 1 } //ラベル付き else { 2 } //returnキーワード無し } } 0322デフォルトの名無しさん2017/12/20(水) 02:29:53.61ID:Y+OkZrNr マップの値を条件判定に使いたいんだけど、Nullableをどう扱って良いのかわからない...
val map = mapOf<String,Boolean>("hoge" to false,"fuge" to true,"piyo" to false)
// ↓こんな感じで書きたいが、Nullableなので怒られる if (map["hoge"]){/*処理*/}
//---------- 解決策 ---------- // @強制的に!!でNotnullにする。でもなんか気持ち悪い。 if (map["hoge"]!!){/*処理*/} // Aエルビス演算子を使う。しかし、IDEからBの書き方を提案される if (map["hoge"] ?: false){/*処理*/} // B凄いバカっぽい。ていうか、これOKで一番上ダメなんだ... if (map["hoge"] == true){/*処理*/}
// checkNotNullの書き方だけ覚えればいいので最近全部これで書いてる val mapValue: Boolean = checkNotNull(map["hoge"]){ "map does not have key:<hoge>" } if (mapValue) { doSomething() }