Kotlin 7
■ このスレッドは過去ログ倉庫に格納されています
JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
Kotlin 6
https://mevius.5ch.net/test/read.cgi/tech/1561186797/ 5ちゃんが高齢化してるなぁと思うのは、Kotlinもそうだけど他の最近流行の言語やらフレームワークやらのスレが全然伸びないところよね
バリバリの若手世代が全然いない 拡張関数の中での this はその関数を呼び出したクラスのインスタンスになっているわけだが、
その拡張関数の中で object を作った場合はそのクラス内からはどうやってアクセスするのか?
this を使うと object のインスタンスになってしまう。かといって this@拡張関数のクラス にしてもできない。
例えばこれ。
fun String.hogeIterator() = object : Iterator<String> {
override fun hasNext(): Boolean { .... }
override fun next(): String {
/* ここでは substring() 等の拡張関数がアクセスしているインスタンスのメソッドを使えるが
* this@String はコンパイル時に unresolved reference: @String になって使えない。
* もちろん this は object を指すので使えない。
*/
}
} fun().this(hoge)
みたいな呼び方出来なかったっけ >>224
ありがとう。 this@hogeIterator でできた。
this@拡張関数名 ということだった。 kotlin/nativeがおもちゃじゃなくなるのはいつなんや。。 Puwede bang maglaro dito? if式をネストさせる場合、内側のif式ないで早期returnしたいんですがどうすればいいんでしょうか??
val hoge = if (条件) {
if (条件1)
return hoge値3 <- ここで早期returnで値を返したい
hoge値2
} else
hoge値1
内側のifをif elseにもっていけばいいのはわかるんですが、
その後、もっとifの早期returnがたくさんあって・・ var hoge = if (条件) {
if (条件)
return hoge値3 <- ここで早期returnで値を返したい
hoge値2
} else
hoge値1 無理にifの戻り値を使わなければよいのでは?
if (条件)
hoge = hoge値3
もしくは
if (条件) {
if (条件)
hoge値3
else
hoge値2
} else {
hoge値1
} うーん。なんかごめんなさい
わけわからないこだわりでしたね・・
おとなしくif else使っときます とりあえずベタで書いて放置
3日後に改めて見ると最適化出来る時あるよね
調子に乗ると思わぬ結果でバグるけど ifもラベルつけられた気がするから余裕でできるんでね?
ただそもそもクソコードの香りがプンプンするから、そもそもその部分は別メソッドに切り出すしたほうが良いと直感がいってる そもそも >>234 は何をやりたいのか? return 書いたら普通にそのメソッドから return しない?
そうではなくて変数 hoge に hoge値3 を代入させたいの? だったら return じゃなくて普通に else 書いてやれば良いだけだし、
それではブロックが巨大で見辛いというのであれば別にメソッド作って外に出せば? >>240
それ質問者の自省と>>239の良回答を言い直しただけじゃね? >>233です
でも元からそこまででかくなかったです
if (条件1)
値1 <- 1行
else if (条件2)
値2 <- メソッド呼び出しの1行
else if (条件3)
値3 <- メソッド呼び出しの1行
else {
//
// <- 13行くらい
//
値4
}
else ifでやると1行、1行、1行、13行くらいで、すげぇ尻だけでかだったので気になったのです
で、とりあえず、最後の13行を一つ別にメソッドに追い出して、最後を4行にもっていけました でも、正直、このレベルだったので、if文で早期returnできた方がいいし13行くらいはそのまま書きたいですね >>243
メソッドとして切り出すかどうかの判断は行数よりもそのコードの意味の単位を基準にするといいよ すごい抽象的な言い方しちゃったごめん
わかりやすいやり方だと、その処理で何をやってるかをそのままメソッド名にすれば分かりやすい
例えばgetNameAndSaveName()みたいになるならこれはgetとsaveに分けるべきだと明らかにわかる whenの方がいいな
AndroidStudioも警告出してないか android studioで警告はでてないですね
whenも考えたのですが、なんかどうもまだしっくりこなくて使ってません
もちろん、when (式) {}形式は使いますが、
when { bool式 ->, bool式 -> , else -> }このタイプは・・ >>244
もちろん、そうですけど
再利用されるならまだしも>>242のifを含むメソッド自体も>>242含めて、計30行くらいだったので
そこまで頑張って外に追い出してと思った次第です
そこは自分の適当なバランス感覚でやってます *そこまで頑張って外に追い出してもと思った次第です Kotlin派のお前らはKotlin以外にどんな言語に興味あるの? >>250
java 読めたらいい
swift iPhone向けも
C++ NDK
C♯ Unity >>251
サンクス。やっぱKotlinの人はスマホが多いのかね。
サーバーサイドだとみんな他に何使ってるんだろう。
まだまだRails多いのかな うちはJava/SpringBootからKotlin/SpringBootにした
サーバーサイドKotlinはJavaからの移行組が結構多いんじゃないかと思う
次にやるならやっぱりGoかなと思う Goって糞じゃね
なんで2020のいまどきポインタとか使わないといけないんだよ
スライスもなんか微妙やし
railsみたいに色んな便利機能が最初からないのも糞
大体Google自体もWebアプリ向けに作ったというより
C言語代替を目的に作ったんじゃないの >>254
全くその通りでGoはホント糞だと思う
でもFargate/マイクロサービス構成にした時にJVMが積み上がってメモリキツキツもつらい
Goの代替としてKotlin/Nativeに期待してたけど全然完成しないし、
Rustも入門してみたけど開発メンバ全員でこれをやるのは無理だなと思った。
なのでマイクロサービスやるんなら選択肢はGoしかないのかなって思ってる 気の利いた機能は排除する代わりに
アホでも書けるように設計してるんだろうな
分かってる人にとっては使うとイライラする GoとKotlinは使い所が違うわなー
Goはまさにマイクロサービス向きで、Spring Bootで作るようなものにはまったく向いてない そう思うとJava、というかSpringはほんとよくできてる jetbrainsがさっさとJSとかモバイルを諦めて、
Kotlin/Native(完成版) + SummerBoot(SpringBootのKotlin/Native版)を
出してくれたら俺のモヤモヤは全部解消する GoでマイクロサービスするならfargateよりもGAEの方が良いよ
fargateというかAWS自体重厚すぎる Goはこの時代に作ってなんやこのクソ言語ってなるのに使いどころあるところが、良くわかってるんだよなぁ Goはせめてジェネリック対応してくれ
ジェネリックもない言語とか今どきアホか、としか思わん >>267
わかる。好き嫌いでいえば嫌いだけど実用性は認めざるを得ない。 モノリシックに作ったサービスを売れてきた段階でマイクロサービス化できるのが真の理想
現状それはGoでもKotlin/JVMでもやりづらい
なので、みんなもっとKotlin/Native&SpringBoot的なFWに期待しようぜ ネイティブやるならrustの方が良くない?
kotlinの存在意義ってjavaのライブラリが利用できる事だと思ってた。 JAVAのライブラリと互換性のあるネイティブのライブラリは作りやすいのではないかな オラクルの訴訟の関係で、Javaライブラリの互換ライブラリは、今は誰もやろうとしないだろう >>275
Java資産を使わないならあんまり旨味ないよな gradleはkotlin dslでも何の不都合もないの? 次のプロジェクトのサーバーサイドを
kotlinにするかgoにするかで揉めとる。
goってそんなにいいの? その2つで揉めることある?
どんな性質のものを作るかで自ずと決まりそうだけど >>284
少し前まではsyntax heighlightが効かなかったりしていたけど、
今ではgroovyで書くときよりIntelliJの補完やIntelliSenseがよく機能していると思う。 goは何が糞といって名前が糞すぎ
なんだよ、goって goとこちょりんで揉めるのがどういう状況なのか想像できない
何を作ろうとしてるんだよ まずググラビリティの話になるけど余程気の利かない人以外はgolangで検索されるようにしてるよ YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
この2つ以外は、出てこない つーか、goはグーグルがつくったんだから
最初からググラビリティのことぐらい考えとけ、っていう >>293
なつかしいな、昔emacsから呼びだせるようにして
ちょいちょい打ってた >>285
goにはjvm使わなくてもいいという利点がある
なのでモノリシックにするならkotlin
サーバーレスにするならgo >>298
モノリスとサーバーレスは対になる概念じゃないからその判断軸はおかしい。なんでアプリケーションの構成の話とインフラの構成の話で比較してるのよ。
どういうものを作るのかで変わるっていうのは完全に同意。 テック系のユーチューバーってちょっと前はとんでもないのばっかだったけど、最近は違うのかな >>294
初心者に対して「王道」とか言う奴は詐欺師か素人なので、信じるやつはアホとしか言いようがない。 そもそもYouTuberなんて基本的に信者を作ってそこから何かしら金を巻き上げるのが仕事だからな
現実的な話をするより分かりやすくてキャッチーな話をするものだろ、そっちの方がウケるから じゃあ Kotlin の話をすれば常に再生数Maxだね。 YouTube で有名な雑食系エンジニア・KENTA は、日本一!
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる。
この2つ以外は、出てこない
嘘がばれるから、他の言語を言えない
例えば、Python, Kotlin を勧めても、
仕事が少ない・取れないとか、難しいとか
唯一、Rubyで、サーバー側を1, 2年やれば、
10年以上のベテランに勝てるから、そこだけを狙っているわけ。
一種のチート技
他の言語では、初心者がベテランに勝てないので採用されないず、苦情が殺到するから 1、2年どころか半年でベテランに並べるみたいなことをいってる奴多すぎだよな、最近
んなわけねーだろとしか言いようがないんだけど 苦情って客先常駐か
そんな根無し草みたいな生き方じゃなく正社員目指せよ >>307
大手のITベンダーでも客先常駐の正社員腐るほどいるぞ
苦情 = 客先常駐 = 非正規って発想がヤバい 大手のITベンダーだから何
客先常駐は常駐先の奴隷のクズ 現場によるとしか言えん。自分の経験の範囲内では半々くらい。
それに疲れたから今は自社サ作ってる。 >>307
正社員て目指すものになったんだな
まあ卑屈にならず頑張れよ 自社サービスできる開発以外は実質派遣だからな
お前らが売ってるのは技術じゃなくて
使い捨てにできる労働力というサービスだ 年収1500万のコンサルタントでも普通に客先常駐する
正社員目指してる君が知らないだけ そのクラスになるとどこにいるかは自分で選べる、が正しいな >>306
新しいトレンドができるたびに飛びつけばよい
常にみんな同じスタートライン 同じスタートラインってまさに未経験者を騙してるインフルエンサーがよく言ってるよな
同じスタートラインなのはエンジニアとしたある程度普遍的な経験値を積んだもの同士の話であって、未経験者がいきなりそこのラインに立てるわけでは無い このスレの人からしたら馬鹿らしい質問かもしれませんが教えてください
ボタン等の押下処理を記述する際、
リスナを使った実装とonClickでメソッドを使った実装、
どのように使い分けるべきでしょうか?
こういう場面ではこっちが優れてる、或いはそもそもどんな場面でもこっちの方が優れてるとかあれば教えて欲しいです ■ このスレッドは過去ログ倉庫に格納されています