JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
Kotlin 6
https://mevius.5ch.net/test/read.cgi/tech/1561186797/
探検
Kotlin 7
■ このスレッドは過去ログ倉庫に格納されています
2020/05/06(水) 16:00:38.76ID:LXTBA+hx
452デフォルトの名無しさん
2020/11/21(土) 18:58:29.84ID:FLFe6WLj APIレスポンス受ける data class のプロパティもコンパイル時に null安全できるようにしてほしい
453デフォルトの名無しさん
2020/11/22(日) 11:05:20.91ID:umfLP4bc >>451
たしかにnullを安易に排斥したところで却って不具合を地下に潜らせることになる
nullの利用価値を保ったまま安全をサポートしてくれるのがKotlinのnull安全
null safeであってnull freeではない
Kotlinではnullかもしれない値を限定でき、その利用時に、分岐するのかエラーで落とすのか初期値で代用するのかを文法的に問うのでより安全
Javaでは試験時に落ちるところを、Kotlinではさらに早くコード補完時や自動ビルド時に気付かせてくれる
たしかにnullを安易に排斥したところで却って不具合を地下に潜らせることになる
nullの利用価値を保ったまま安全をサポートしてくれるのがKotlinのnull安全
null safeであってnull freeではない
Kotlinではnullかもしれない値を限定でき、その利用時に、分岐するのかエラーで落とすのか初期値で代用するのかを文法的に問うのでより安全
Javaでは試験時に落ちるところを、Kotlinではさらに早くコード補完時や自動ビルド時に気付かせてくれる
454デフォルトの名無しさん
2020/11/23(月) 15:21:42.81ID:QcOiDeXE >>433
絶対に許さない。
絶対に許さない。
455デフォルトの名無しさん
2020/11/28(土) 10:17:31.66ID:TP8nXubU Jetpack Compose for Desktop ってどうなんだろう。
TornadoFXが死に体なので脱出先を探しているが、
Android用の設計を無理に移植していびつだったりするんだろうか。
TornadoFXが死に体なので脱出先を探しているが、
Android用の設計を無理に移植していびつだったりするんだろうか。
456デフォルトの名無しさん
2020/11/29(日) 14:55:05.68ID:KxupmnON Kotlin って List の内容をローテートするメソッドって用意されてないの?
[1, 2, 3] の右回しなら結果が [3, 1, 2] で左回しなら [2, 3, 1] になるようなやつ。
(シフトしかできなくても組み合わせれば作れるから良いんだけど)。
自作するしかない?
ていうか自作することそのものは簡単なんだけどね。例えばこんな風に書けばいいだけだから。
fun <E> List<E>.rotateLeft() = ((1..lastIndex) + 0).map { get(it) }
ただ元からライブラリに用意されていたら無駄になるので存在の有無を知りたいということ。
[1, 2, 3] の右回しなら結果が [3, 1, 2] で左回しなら [2, 3, 1] になるようなやつ。
(シフトしかできなくても組み合わせれば作れるから良いんだけど)。
自作するしかない?
ていうか自作することそのものは簡単なんだけどね。例えばこんな風に書けばいいだけだから。
fun <E> List<E>.rotateLeft() = ((1..lastIndex) + 0).map { get(it) }
ただ元からライブラリに用意されていたら無駄になるので存在の有無を知りたいということ。
457デフォルトの名無しさん
2020/11/29(日) 15:24:23.71ID:IcRbcY/o Javaにある
458デフォルトの名無しさん
2020/11/29(日) 18:30:32.35ID:KxupmnON >>457
おお!ありがとう。java.util.Collections.rotate() ね。
でもこれ、Kotlin の List でも使えるけど List の内容が変わっちゃうのな。
(MutableList じゃないのに)
>>> val ls = listOf(1, 2, 3, 4)
>>> ls
res14: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, 1)
>>> ls
res16: kotlin.collections.List<kotlin.Int> = [4, 1, 2, 3]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res18: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res20: kotlin.collections.List<kotlin.Int> = [2, 3, 4, 1]
>>>
まあ変換して Java 側に渡してるだけだろうから仕方がないか。
おお!ありがとう。java.util.Collections.rotate() ね。
でもこれ、Kotlin の List でも使えるけど List の内容が変わっちゃうのな。
(MutableList じゃないのに)
>>> val ls = listOf(1, 2, 3, 4)
>>> ls
res14: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, 1)
>>> ls
res16: kotlin.collections.List<kotlin.Int> = [4, 1, 2, 3]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res18: kotlin.collections.List<kotlin.Int> = [1, 2, 3, 4]
>>> java.util.Collections.rotate(ls, -1)
>>> ls
res20: kotlin.collections.List<kotlin.Int> = [2, 3, 4, 1]
>>>
まあ変換して Java 側に渡してるだけだろうから仕方がないか。
459デフォルトの名無しさん
2020/11/30(月) 00:21:55.65ID:XdYfXM2+ お約束だけどKotlinのListには最初からイミュータブル性はないよ
変更機能に関心のないビューでしかない
MutableListがListを継承してるというのが何よりの性質
変更機能に関心のないビューでしかない
MutableListがListを継承してるというのが何よりの性質
460デフォルトの名無しさん
2020/11/30(月) 21:07:46.44ID:d/P6xXcm クロスプラットフォームは総じて糞と相場は決まっている
461デフォルトの名無しさん
2020/12/01(火) 07:14:35.59ID:1c6vRoBT できることがOR結合ではなくAND結合で絞られてしまうのがクロスプラットフォーム。
できることしかできない。
できることしかできない。
462デフォルトの名無しさん
2020/12/01(火) 07:41:02.13ID:7egfpP3/ !!や?って説明できるなら使ってもいいんだよね
いま宣言したけど中身がない、下の行で関数かなんか呼び出して空の変数に入れる、その変数を使う
コードの中に書いたらダメならそもそも書けないし
見る人が嫌ってだけだよね
いま宣言したけど中身がない、下の行で関数かなんか呼び出して空の変数に入れる、その変数を使う
コードの中に書いたらダメならそもそも書けないし
見る人が嫌ってだけだよね
463デフォルトの名無しさん
2020/12/01(火) 08:37:49.02ID:A2yZQJjL javaでいいよ
無理矢理感有り過ぎの上
文法がひどい
無理矢理感有り過ぎの上
文法がひどい
464デフォルトの名無しさん
2020/12/01(火) 12:39:29.78ID:xAN1+Wpp >>462
明快な話だよ
どちらの演算子も、if文を使ったそれと等価のロジックに置き換えて考えて、そのロジックを使うべきだと思えば使えばいい
特定の頻出イディオムの短縮記法に過ぎないと捉えれば、長ったらしく書くよりも演算子ですっきり書いた方がいいとわかるはず
追加メッセージのないNPEを送出するなんて絶対にムリという状況下なら !! は使わないことになるだろうし、低リスクな部分なんて元々エラーメッセージ考えないし万一落ちたらスタックトレース見りゃいいやという状況なら !! を使うのは理に適ってる
状況を問わず絶対に使うなというのは原理主義者かアホだと思う
Javaを使ってるのにクラスや例外を避けようとする老人と似たようなもの
明快な話だよ
どちらの演算子も、if文を使ったそれと等価のロジックに置き換えて考えて、そのロジックを使うべきだと思えば使えばいい
特定の頻出イディオムの短縮記法に過ぎないと捉えれば、長ったらしく書くよりも演算子ですっきり書いた方がいいとわかるはず
追加メッセージのないNPEを送出するなんて絶対にムリという状況下なら !! は使わないことになるだろうし、低リスクな部分なんて元々エラーメッセージ考えないし万一落ちたらスタックトレース見りゃいいやという状況なら !! を使うのは理に適ってる
状況を問わず絶対に使うなというのは原理主義者かアホだと思う
Javaを使ってるのにクラスや例外を避けようとする老人と似たようなもの
465デフォルトの名無しさん
2020/12/01(火) 14:06:45.61ID:Y3029ltu !!を使わなくても書けるのに敢えてクラッシュのリスクのある!!を使う必要ない
466デフォルトの名無しさん
2020/12/01(火) 14:51:50.13ID:GnBhcVmn コントラクト書いてもスマートキャストできないならアリ
467デフォルトの名無しさん
2020/12/01(火) 17:28:10.09ID:/2lR8en+ assert文もクラッシュのリスクがあるから使わないって言うんだろうか
フェイルセーフで進めるべきシーンとフェイルファストで落とすべき部分を判断して使い分けてほしい
フェイルセーフで進めるべきシーンとフェイルファストで落とすべき部分を判断して使い分けてほしい
468デフォルトの名無しさん
2020/12/01(火) 17:44:21.87ID:VNs10yiL そんなのは設計が糞
センスないからしね
センスないからしね
469デフォルトの名無しさん
2020/12/01(火) 18:45:05.23ID:1c6vRoBT いろんな宗教食タブーに配慮した結果、鶏肉料理しか選択肢がなくなる感じ。それがクロスプラットフォーム。
470デフォルトの名無しさん
2020/12/01(火) 19:28:13.47ID:+SEOBXSY そうそう、そんな感じ
471デフォルトの名無しさん
2020/12/01(火) 21:58:25.69ID:G7RpB3vG >>459
あー。Stringとかと同じか。書き換えられないように作ってあるだけで言語レベルでリードオンリーというわけではないという。
あー。Stringとかと同じか。書き換えられないように作ってあるだけで言語レベルでリードオンリーというわけではないという。
472デフォルトの名無しさん
2020/12/02(水) 07:55:24.49ID:qZqo4QmM そういうこと。ただ変更のためのAPIを提供してないだけ。
473デフォルトの名無しさん
2020/12/02(水) 10:41:02.88ID:i+bjk1CY Stringはクラスがfinalで閉じてる分、変更可能性という意味では層が少し違うかな
474デフォルトの名無しさん
2020/12/02(水) 10:42:20.86ID:i+bjk1CY CharSequenceが等価だと思う
475デフォルトの名無しさん
2020/12/04(金) 16:14:35.33ID:aGuBhpl1 >>461
何つながりでいっているのか知らないけれど、まあ、それでも基本部分だけでも
動作すればだいぶ楽にはなる。
同じように書いてHelloWorldが出て、直線や矩形描画、文字描画、キー入力が
共通化されていて、同じ言語で書けるならかなり楽になるから。
クロスプラットフォームキットを何も使わなければ、言語自体も違ったりして、
ロジック部分すら共通化できず、大変なことになる。
WindowsではC++(またはC#), AndroidはJava, AppleはSwiftみたいに。
そしてprintf()文すら共通しては使えない。
何つながりでいっているのか知らないけれど、まあ、それでも基本部分だけでも
動作すればだいぶ楽にはなる。
同じように書いてHelloWorldが出て、直線や矩形描画、文字描画、キー入力が
共通化されていて、同じ言語で書けるならかなり楽になるから。
クロスプラットフォームキットを何も使わなければ、言語自体も違ったりして、
ロジック部分すら共通化できず、大変なことになる。
WindowsではC++(またはC#), AndroidはJava, AppleはSwiftみたいに。
そしてprintf()文すら共通しては使えない。
476デフォルトの名無しさん
2020/12/05(土) 12:38:19.27ID:Na39OKS5 実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
477デフォルトの名無しさん
2020/12/12(土) 16:10:56.29ID:2H3Jk65M Kotlinは人気順位をどんどん下げてんね。
478デフォルトの名無しさん
2020/12/12(土) 17:12:12.40ID:DUS5CJRd 型違いやぬるぽのエラーが動かす前にわかるというが
逆に言うと動かせばすぐわかることだ
今時そのパスとおってませんとかテストでありえんから
型なんかいらんかったんや
逆に言うと動かせばすぐわかることだ
今時そのパスとおってませんとかテストでありえんから
型なんかいらんかったんや
479デフォルトの名無しさん
2020/12/12(土) 17:37:35.65ID:UcLPJJJE そんなしっかりテスト書くなら型あった方が楽じゃん
480デフォルトの名無しさん
2020/12/12(土) 19:11:57.44ID:s2JPaqvY 変数は全部public staticで MutableList<Object>じゃい!
goto文も好きに使え!
だって全部テストでパス通せばいいじんじゃい!
うん、暴論だと思う
null安全も型安全もカプセル化も、言ってしまえばほんのちょっとの便利ツールでしかないんだけど、そのほんのちょっとがバグを減らし、思考の負荷を落としてくれる
goto文も好きに使え!
だって全部テストでパス通せばいいじんじゃい!
うん、暴論だと思う
null安全も型安全もカプセル化も、言ってしまえばほんのちょっとの便利ツールでしかないんだけど、そのほんのちょっとがバグを減らし、思考の負荷を落としてくれる
481デフォルトの名無しさん
2020/12/12(土) 19:17:54.50ID:s2JPaqvY 万全のテストが組み上がった後では言語ごとの安全設計の違いはプロダクトの品質に影響をほとんど及ぼさない、それはそうかもしれない
ただ、その万全のテストが手にはいるまでにどれだけのコストを要するかが違う
流れるように書くことができて、書き間違えや考慮漏れが起こりにくく、テスト作成中にfailが出てもすぐに特定して直せる、その結果生産性が高い、それがいい言語だと思う
ただ、その万全のテストが手にはいるまでにどれだけのコストを要するかが違う
流れるように書くことができて、書き間違えや考慮漏れが起こりにくく、テスト作成中にfailが出てもすぐに特定して直せる、その結果生産性が高い、それがいい言語だと思う
482デフォルトの名無しさん
2020/12/12(土) 19:17:56.76ID:DUS5CJRd 誤りは防ぐが思考の負荷は増えるぞ
483デフォルトの名無しさん
2020/12/12(土) 19:31:00.69ID:s2JPaqvY とても小さいスクリプトを書く場合と、バグをいくらでも作ってよく誰かが直してくれるならそうだな
VBの変数宣言不要のVariant天国は何でも格納できて極楽
一方である程度大きいものをバグなく作る必要があるなら脳内に展開する必要のあるデータ量が増えてスケールしなくなる
VBの変数宣言不要のVariant天国は何でも格納できて極楽
一方である程度大きいものをバグなく作る必要があるなら脳内に展開する必要のあるデータ量が増えてスケールしなくなる
484デフォルトの名無しさん
2020/12/13(日) 08:02:21.21ID:VmHeogwF 単純に型のあるなしだと設計を疎結合にしやすいとかリファクタの安全性が高いとか色々変わってきますがな
485デフォルトの名無しさん
2020/12/13(日) 11:22:13.31ID:OcllVIux それでもやっぱり型が好き
486デフォルトの名無しさん
2020/12/13(日) 13:22:32.62ID:5EW0FlRD シェルスクリプトやマクロみたいな簡単な治具には形を意識せずにすむ言語がお手軽だし、バックエンドのシステムを組み上げるにはnull安全のある厳しい静的型付き言語がフィットするので使い分けましょうねという結論でいいと思う
使い分けのミスマッチを解消したいい例がTypeScript
使い分けのミスマッチを解消したいい例がTypeScript
487デフォルトの名無しさん
2020/12/13(日) 17:03:49.88ID:nviDagiX Rubyも型のような何かを入れたし、時代の流れだわね
488デフォルトの名無しさん
2020/12/14(月) 00:35:19.60ID:6zFeqNk6 数値や String が保持出来て計算出来れば良いんだったらそういうクラス作って
operator で色々作って計算出来るようにしちゃえば良いんじゃないか?
効率悪いかも知れないが。
operator で色々作って計算出来るようにしちゃえば良いんじゃないか?
効率悪いかも知れないが。
489デフォルトの名無しさん
2020/12/14(月) 08:23:45.23ID:NKntA+ls490デフォルトの名無しさん
2020/12/14(月) 10:17:36.45ID:wjvd2Hwv 君らみたいにkotlinやってる人ってアプリ開発者が多いのか?
491デフォルトの名無しさん
2020/12/14(月) 10:24:57.92ID:gp9Z60vS Android以外でKotlin使ってんだなぁて思う
JavaだったとこをKotlinに置き換えてんの?
JavaだったとこをKotlinに置き換えてんの?
492デフォルトの名無しさん
2020/12/14(月) 10:39:03.40ID:sJtbd1yB 元々Javaのサーバアプリ書いてる
493デフォルトの名無しさん
2020/12/14(月) 18:48:58.24ID:rjPJQsvc サーバーサイドだね
完全にbetter Javaとして使ってる
既存コードの置き換えもするし、新規実装するものに関しては完全にことりん
完全にbetter Javaとして使ってる
既存コードの置き換えもするし、新規実装するものに関しては完全にことりん
494デフォルトの名無しさん
2020/12/14(月) 18:50:01.54ID:gp9Z60vS Androidやってるだけだからサーバーとか行っても戦力にならないんだろうな
同じ言語なのにここに出てくるサーバーサイドの会話がなんとなくわかったつもりの異次元
同じ言語なのにここに出てくるサーバーサイドの会話がなんとなくわかったつもりの異次元
495デフォルトの名無しさん
2020/12/14(月) 18:50:06.38ID:rjPJQsvc サーバーサイドkotlinは採用も意外に楽よ
それ自体の経験者はほぼいないけど、Kotlin書きたいJava経験者はかなりいるから
それ自体の経験者はほぼいないけど、Kotlin書きたいJava経験者はかなりいるから
496デフォルトの名無しさん
2020/12/14(月) 18:50:39.52ID:rjPJQsvc497デフォルトの名無しさん
2020/12/14(月) 22:34:42.15ID:dZWdULI2 nullsafeでぬるぽが減った人いますか?
498デフォルトの名無しさん
2020/12/22(火) 19:15:05.74ID:oIaxfxum 減るっていうか0になったけど何が言いたいんだろ
499デフォルトの名無しさん
2020/12/22(火) 21:19:38.41ID:3Bv244xN ぬるぽを無くすためのnullsafeだからな
500デフォルトの名無しさん
2020/12/22(火) 22:42:34.84ID:Df60bwVz DBカラムに入ってるはずのデータがなかったときどんなエラーがでるんすか
501デフォルトの名無しさん
2020/12/22(火) 23:40:20.45ID:Olju/RJS ヌルポよりも大切なものを失います
502デフォルトの名無しさん
2020/12/23(水) 00:04:41.19ID:6GFRBN6f APIのレスポンスがnullじゃないはずなのにnullが返ってきたときどうしたらいいんですか
503デフォルトの名無しさん
2020/12/23(水) 19:38:57.98ID:NEftcK31 nullsafe って言うのは Null チェックしなくていいという意味じゃないよ?
チェック必要なものと不要なものを区別して、必要なものはチェックしてからアクセスしないとコンパイルエラーになるんだよ?
チェック必要なものと不要なものを区別して、必要なものはチェックしてからアクセスしないとコンパイルエラーになるんだよ?
504デフォルトの名無しさん
2020/12/24(木) 07:36:37.88ID:woO5Pxu8 >>502
普通にnullチェック入れればいいんじゃないの?
普通にnullチェック入れればいいんじゃないの?
505デフォルトの名無しさん
2020/12/24(木) 08:10:29.60ID:QpUzPsdF506デフォルトの名無しさん
2020/12/24(木) 08:57:55.57ID:N8XXHmSr まずレスポンスのデータクラスのフィールドををnullableにしないといけない
nonnullでもコンパイルエラーならないのにだ
nonnullでもコンパイルエラーならないのにだ
507デフォルトの名無しさん
2020/12/25(金) 09:41:57.24ID:yOAc+N/y 何で companion object って一番下なんすか
一番上じゃ駄目なんすか
一番上じゃ駄目なんすか
508デフォルトの名無しさん
2020/12/25(金) 11:57:59.25ID:LVz6iinV kotlin世界との境界部分はもろもろを自分で気を付けるしかない
509デフォルトの名無しさん
2020/12/27(日) 23:41:45.31ID:mqWB+gDR >>507
文法的にはどっちでもいいよ
文法的にはどっちでもいいよ
510デフォルトの名無しさん
2021/01/01(金) 17:03:56.74ID:oTJ6QRVP kotlin/nativeでサーバーサイド作る話はどうなった?
511デフォルトの名無しさん
2021/01/02(土) 07:50:34.05ID:7+xZsyvI SuperJobだと、子の失敗は親に影響与えないとのことですが、子をキャンセルすると親もキャンセルされてしまうとのことです
子が失敗しようが、子をキャンセルしようが親に全く影響を与えたくないのですがどうすればいいでしょうか?
子が失敗しようが、子をキャンセルしようが親に全く影響を与えたくないのですがどうすればいいでしょうか?
512デフォルトの名無しさん
2021/01/02(土) 08:31:31.17ID:7+xZsyvI SupervisorJobだった
つか、なんかややこしくなってきた
間違ってた、SupervisorJobは子のキャンセルは親に影響しないからスーパーなのか?
つか、なんかややこしくなってきた
間違ってた、SupervisorJobは子のキャンセルは親に影響しないからスーパーなのか?
513デフォルトの名無しさん
2021/01/02(土) 12:00:19.22ID:7+xZsyvI 間違ってた
子Jobのcacelメソッドによるキャンセルは親が普通のJobだろうがSupervisorJobだろうが親をキャンセルさせない
子JobがCacellationException以外の例外で失敗したとき、違いがでてくるのか
子Jobのcacelメソッドによるキャンセルは親が普通のJobだろうがSupervisorJobだろうが親をキャンセルさせない
子JobがCacellationException以外の例外で失敗したとき、違いがでてくるのか
514デフォルトの名無しさん
2021/01/02(土) 13:51:40.78ID:iRQWAItx おちつけ
515デフォルトの名無しさん
2021/01/07(木) 12:30:36.60ID:upgodNBv 明けましておめでとうございます。
ことりんもよろしくお願いします。
ことりんもよろしくお願いします。
516デフォルトの名無しさん
2021/01/07(木) 13:06:35.86ID:n0qoIkIN 酉年にやれよ
517デフォルトの名無しさん
2021/01/08(金) 00:22:29.53ID:q8lyQLUk 2029年までネタとして取っておこう…
518デフォルトの名無しさん
2021/01/08(金) 00:30:46.51ID:s1r0Khta その時まで生きてるのかな、ことりん
519デフォルトの名無しさん
2021/01/08(金) 07:52:19.70ID:AiUWBAU5 こぅのとぉりん生きてますよ
520デフォルトの名無しさん
2021/01/08(金) 08:38:56.45ID:rfni5yw0 ことりんじゅうさまです
なんてことならないように使っていこう
なんてことならないように使っていこう
521デフォルトの名無しさん
2021/01/09(土) 09:13:47.78ID:ZIgIrWmA 例えばUserクラスがあって、userIdプロパティとネストしたUser型のuserプロパティがあります
このときList<User> users
から、users.map?とかcollection apiを使ってネストしたUserも含めたすべてのuserIdのリストを求める方法があれば教えて下さい
再帰関数を用意しないと無理?
このときList<User> users
から、users.map?とかcollection apiを使ってネストしたUserも含めたすべてのuserIdのリストを求める方法があれば教えて下さい
再帰関数を用意しないと無理?
522デフォルトの名無しさん
2021/01/09(土) 09:19:13.14ID:ZCNL7UEp flatmap
523デフォルトの名無しさん
2021/01/09(土) 09:28:30.58ID:ZIgIrWmA userプロパティは多段ネストする可能性があるんですがflatMapでいけましたっけ?
524デフォルトの名無しさん
2021/01/09(土) 15:43:34.22ID:v5qb+Ohk プロパティをどう辿るかはcollection apiだけじゃどうにもならないから自分で実装するしかないでしょ
扱うデータによっては重複や循環なんかも考慮が必要かも
https://paiza.io/projects/JkGNST_vjmARbX8XFfMLnA
扱うデータによっては重複や循環なんかも考慮が必要かも
https://paiza.io/projects/JkGNST_vjmARbX8XFfMLnA
525デフォルトの名無しさん
2021/01/10(日) 00:59:41.08ID:vFHdkGQn >>521
そのロジックに意味のあるものならUserにallChildrenUser : List<User>メソッドを作って子のallChildrenUserを呼び出す、つまり再帰構造、allChildrenUser() -> users.flatmap{ it.allChildrenUser() }
かな
ネスト構造の時点で循環参照の可能性があるわけで言語機能でどうにかなる話とは違うと思う
または、データ構造として最適なツリーを採用したほうが良いかもしれん
そのロジックに意味のあるものならUserにallChildrenUser : List<User>メソッドを作って子のallChildrenUserを呼び出す、つまり再帰構造、allChildrenUser() -> users.flatmap{ it.allChildrenUser() }
かな
ネスト構造の時点で循環参照の可能性があるわけで言語機能でどうにかなる話とは違うと思う
または、データ構造として最適なツリーを採用したほうが良いかもしれん
526デフォルトの名無しさん
2021/01/10(日) 01:38:59.42ID:Kq/dusa6 自分が出来ると心から信じることができれば必ずやれる
527デフォルトの名無しさん
2021/01/10(日) 20:09:18.30ID:JmQQkhyb 言語機能でどうにかなるか否かはまた別の話でしょう
データが循環していたらスタックオーバーフローなりその他の例外なりが出るように標準ライブラリが設計されていればいいだけなので
データが循環していたらスタックオーバーフローなりその他の例外なりが出るように標準ライブラリが設計されていればいいだけなので
528デフォルトの名無しさん
2021/01/10(日) 20:13:22.96ID:JmQQkhyb 余談だけどグラフの探索は再帰を使わなくてもループに書き換えることができる
スタックオーバーフローしなくなるのが利点
ループではなく再帰でしか解決できないアルゴリズム問題が存在し得るかどうかは不勉強なので知らない
スタックオーバーフローしなくなるのが利点
ループではなく再帰でしか解決できないアルゴリズム問題が存在し得るかどうかは不勉強なので知らない
529デフォルトの名無しさん
2021/01/10(日) 20:31:18.39ID:N5z3vzVP 再帰は必ずループに出来る
530デフォルトの名無しさん
2021/01/10(日) 21:54:19.01ID:YxBPzBtX クイックソートどうすんじゃ
531デフォルトの名無しさん
2021/01/10(日) 21:56:12.30ID:YxBPzBtX 木の探索は横探索すればいいか
スタックのかわりにヒープがあふれる
スタックのかわりにヒープがあふれる
532デフォルトの名無しさん
2021/01/10(日) 22:08:14.99ID:fqhi9u3I whileループでbreakすればいい
533デフォルトの名無しさん
2021/01/10(日) 22:25:02.75ID:GNExugp7 flatmapで何でも解決できる
534デフォルトの名無しさん
2021/01/22(金) 13:56:01.26ID:g1yAjsTk じゃあflatmapで俺の資産を増やしてくれ
535デフォルトの名無しさん
2021/01/22(金) 14:36:13.50ID:JAaKTTQV flatmapと元気があれば何でもできる!
536デフォルトの名無しさん
2021/01/22(金) 20:45:59.10ID:xnRnhQMQ Kotlin Roadmap
https://kotlinlang.org/roadmap.html
https://kotlinlang.org/roadmap.html
537デフォルトの名無しさん
2021/01/25(月) 06:26:23.02ID:hTvlKNeR >>534
理論上はflatmapで何でも解決できるとしても、実装するには十分な数学的能力が必要なのだ。
理論上はflatmapで何でも解決できるとしても、実装するには十分な数学的能力が必要なのだ。
538デフォルトの名無しさん
2021/01/25(月) 18:04:21.90ID:gx6uUcGg >>537
そうか。じゃあお前なら出来るんだな。任せたぞ。
そうか。じゃあお前なら出来るんだな。任せたぞ。
539デフォルトの名無しさん
2021/01/25(月) 22:47:14.88ID:h35Snctt プログラミングは
気合いだ
たとえば1万件のソートをするのに
処理のオーダーがどうとか
クイックソートのライブラリがないとか
代替するものをつくるかどうかとか
悩むときに
Excelにはっつけたり
2重ループで平気で馬鹿ソートする
周囲の嘲笑をものともしない決断力
そういうやつができるやつなんだ
気合いだ
たとえば1万件のソートをするのに
処理のオーダーがどうとか
クイックソートのライブラリがないとか
代替するものをつくるかどうかとか
悩むときに
Excelにはっつけたり
2重ループで平気で馬鹿ソートする
周囲の嘲笑をものともしない決断力
そういうやつができるやつなんだ
540デフォルトの名無しさん
2021/01/26(火) 08:07:03.00ID:z9KCwqI+ >>539
そういう能力の人は便利屋として安い単価で使い捨てられるだけです
そういう能力の人は便利屋として安い単価で使い捨てられるだけです
541デフォルトの名無しさん
2021/01/26(火) 11:42:19.41ID:V/Um6Sz0 いうほどflatmap使うか?
そりゃたまには使うけどさ
そりゃたまには使うけどさ
542デフォルトの名無しさん
2021/01/26(火) 12:25:48.83ID:nusF9BAT 1万件程度なら普通にExcelも使うし
バカソートも使う
もちろん製品コードではそんな事はないけど
バカソートも使う
もちろん製品コードではそんな事はないけど
543デフォルトの名無しさん
2021/01/26(火) 20:08:03.52ID:u/mIbNWf flatmapが世界を救う
544デフォルトの名無しさん
2021/01/26(火) 20:21:56.10ID:0fVnbxLr flatmapはステータスだ!
545デフォルトの名無しさん
2021/01/27(水) 16:58:07.84ID:yhGPUjKe !!って基本的に使うべきでないんですかね
546デフォルトの名無しさん
2021/01/27(水) 23:12:27.62ID:e4FHF1X1 >>538
STモナドの中に入れたら増やせそうな気がするが、取り出せなくなるけどいい?
STモナドの中に入れたら増やせそうな気がするが、取り出せなくなるけどいい?
547デフォルトの名無しさん
2021/01/27(水) 23:15:32.07ID:9akTDBYB >>545
簡易的なアサーションとして理解した上でNPEが出てほしい場合は使っていいよ
知らない間に大事な処理が実行されずスルーされたりするよりも、バグなのでとっとと例外を出して知らせてほしい場合とかね
https://kotlinlang.org/docs/reference/null-safety.html
> Thus, if you want an NPE, you can have it, but you have to ask for it explicitly, and it does not appear out of the blue.
簡易的なアサーションとして理解した上でNPEが出てほしい場合は使っていいよ
知らない間に大事な処理が実行されずスルーされたりするよりも、バグなのでとっとと例外を出して知らせてほしい場合とかね
https://kotlinlang.org/docs/reference/null-safety.html
> Thus, if you want an NPE, you can have it, but you have to ask for it explicitly, and it does not appear out of the blue.
548デフォルトの名無しさん
2021/01/28(木) 09:16:46.22ID:zbveLxMQ kotlinではnullチェックの代わりに?.を使うべきですか
549デフォルトの名無しさん
2021/01/28(木) 09:54:30.26ID:fR55BjA1 nullチェックと一口に言ってもバリエーションを考えないとだめ
nullなら何もしない
nullなら空白で表示する
nullならハイフンで表示する
nullなら代替手段で値を取りに行く
nullならログを吐いてフォールバックする
nullならフェイルファストで例外を出す
?.は上記のうちの一部に最適ではあるものの、一部には役に立たない
実現したいことや状況に沿った措置が先にあり、それをコードで表現するために適した言語機能を選ぶという順序で考えるべき
nullなら何もしない
nullなら空白で表示する
nullならハイフンで表示する
nullなら代替手段で値を取りに行く
nullならログを吐いてフォールバックする
nullならフェイルファストで例外を出す
?.は上記のうちの一部に最適ではあるものの、一部には役に立たない
実現したいことや状況に沿った措置が先にあり、それをコードで表現するために適した言語機能を選ぶという順序で考えるべき
550デフォルトの名無しさん
2021/01/28(木) 12:36:53.48ID:Tpt+oTXI nullなら割り込み禁止してその場で無限ループ
551デフォルトの名無しさん
2021/01/29(金) 15:21:19.10ID:8+3TBqwa Kotlinって、SwiftやRuby以上にWindows切り捨て感があるのな
■ このスレッドは過去ログ倉庫に格納されています
