1 名前:デフォルトの名無しさん [2018/03/19(月) 04:26:26.03 ID:GqsfT9Tb.net] JetBrainsが開発した期待の新言語Kotlinについて語りましょう https://kotlinlang.org 前スレ Kotlin 2 https://mevius.5ch.net/test/read.cgi/tech/1509462463/
739 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 10:54:34.73 ID:sDkOSnE9.net] >>726 IntelliJのCode Style設定ではどちらも選べるようになってるから、どちらでもいいんでない
740 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 12:07:35.37 ID:eli6Ofbc.net] >>727 ,728 そーなのか なんとなく型はスペース無しで継承はスペース有りかと ありがとりん
741 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 15:54:18.89 ID:fF3oZnn5.net] そうそう型と継承が同じ記法だからごちゃごちゃするよな どうせならすべて動的型付けにすればよかったのに
742 名前:デフォルトの名無しさん [2018/07/02(月) 16:24:41.26 ID:6MU/ELtX.net] 動的型付けだと、存在意義全否定だろ。 Groovyでも使っとけ。
743 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 20:41:56.60 ID:nCi8FeLN.net] 型推論と動的型付けを混同すんなよ
744 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:15:16.60 ID:BzTTxziN.net] >>700 お礼が遅れてすみません。 仰る通り、記載ミスで、y(x)です。 ご解説ありがとうございます。 すっきりしました。ありがとうございます。
745 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 21:24:23.77 ID:EvLqbtyu.net] >>733 うむ。精進なされよ。
746 名前:デフォルトの名無しさん mailto:sage [2018/07/02(月) 23:00:47.89 ID://b/At4I.net] 慣れたら型が後の方が可読性高く感じる それと構文解析しやすくなるのもあるんじゃね Kotlinでの (T1,T2)->R はJavaでは BiFunction<T1,T2,R> 型が先だと関数型(function type)が他の構文と衝突しないよう識別子やジェネリクス型を置くことになる
747 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 00:00:46.54 ID:GdB7bYPq.net] (TT^TT)
748 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 00:39:55.52 ID:TIu9/k2l.net] 関数の返値の変数の型も指定できるから、そっちのほうはわかりやすいんじゃないかな fun hoge(): String = "ぬるぽ" 関数型プログラミングだと、そういう形式のほうがわかりやすいんじゃないかと思う val hoge: () -> String = fun(): String = "ぬるぽ"
749 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 09:23:57.08 ID:5ohzf/bH.net] >>737 ガッ
750 名前:デフォルトの名無しさん [2018/07/03(火) 10:05:34.13 ID:2Hrfam1D.net] 慣れの問題じゃなあかなあ
751 名前:デフォルトの名無しさん [2018/07/03(火) 10:06:19.13 ID:2Hrfam1D.net] うう。スマホのフリック入力で失敗した。
752 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 10:07:52.88 ID:ng0Ex9q0.net] >>739 人間歳をとると新しいものに慣れるのに時間がかかるようになる そしてこのスレはおっさんのすくつだ
753 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 10:19:34.86 ID:lMsOY+nb.net] このスレの人たち、今だにガラケー使ってそうだな いつまで慣れの問題でギャーギャー言ってんだよ
754 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 10:40:19.23 ID:pQbF/VH/.net] >>740 「い」の入力失敗率はあじょう。 人間工学的におかしあ。 あちばん遠あからな。
755 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 11:32:14.53 ID:jh9a6Llj.net] >>742 幸か不幸かどこぞの板と違って末尾で判断できない
756 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 15:12:48.33 ID:k8WNCQ/C.net] kotlinのコロン( : )ってどんな働き・役割なのですか?
757 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 15:56:30.11 ID:k8WNCQ/C.net] もう一つ質問させてください 1. class chiba{ } 2. class chiba(){ ] 3. class chiba(city:String="--"){ } 1はコンストラクタは持たない 2は自動でパラメータのないコンストラクタが生成される 3は( )内でパラメータを初期化し{ }がコンストラクタになる という理解でいいのでしょうか?
758 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 16:38:20.61 ID:h4wqJ0lA.net] >>745 単独では何の働きも役割もない ただの区切り文字
759 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:19:53.43 ID:rBmEiF9u.net] >>746 以下4行は同一、下に行くほど省略表記なだけ コンストラクタは自動的に作られる class chiba constructor() { } class chiba() { } class chiba { } class chiba コンストラクタ(プライマリコンストラクタ)の中身は 初期化ブロック( init{...} )とインスタンス変数の初期化 具体的にコードで https://ideone.com/KpwsQl リファレンス https://kotlinlang.org/docs/reference/classes.html
760 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 20:54:14.27 ID:ODNzvHJa.net] ObservableFieldの説明を見ていたら、 https://developer.android.com/reference/android/databinding/ObservableField public final ObservableField<String> first = new ObservableField<String>(); public final ObservableField<String> last = new ObservableField<String>(); public final ObservableField<String> display = new ObservableField<String>(first, last) { @Override public String get() { return context.getResources().getString(R.string.name, first.get, last.get()); } }; 既存のObservableFieldを組み合わせて新しいObservableFieldを作るようなコードが載っているので、 そのままコピペして試してみたんですが、コンパイルが通らないんですがどうしたらいいですか
761 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:10:49.57 ID:egr/fzRr.net] >>749 コンパイルエラーのエラーメッセージを読む
762 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:13:11.08 ID:b3yF7W7d.net] それJavaじゃん Kotlinで書く
763 名前:デフォルトの名無しさん mailto:sage [2018/07/03(火) 21:34:21.57 ID:ODNzvHJa.net] Kotlinに変換しても同じだった エラーメッセージは以下だが、何を治したらいいのか Cannot resolve constructor 'ObservableField(...)'
764 名前:デフォルトの名無しさん [2018/07/04(水) 04:50:43.63 ID:deFmQ17L.net] スレ違いの
765 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 04:54:54.94 ID:/r54tfMO.net] コトリヌス
766 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:37:22.00 ID:QS1wdrQw.net] >>752 だからKotlinで書けよ 自動変換は完璧じゃない
767 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:37:52.39 ID:K6PpspCw.net] 基礎からやっていくか、状況をちゃんと説明出来るようになるか
768 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:42:41.16 ID:d8xWcdxC.net] 初心者でせっかくだらjavaよりも新しいkotlinでやろうと勉強中なんだけど、結局javaも知らんといかんのね…
769 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 07:54:41.64 ID:qSU3AFLq.net] 「こんぱいるとおりません」は実際なんも説明してねーからな で、「ほんとうに」全部自分でゼロから作るならJavaの知識は不要なのだけど 実際はJavaの内部ライブラリやJava製の外部ライブラリを利用するorさせられることが多いので Javaは少なくとも読めて呼び出し法くらいは知っておかないと現状余裕で詰まる
770 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 08:34:41.84 ID:dJOGt5Qc.net] 普通に、コンストラクタの引数がちがうか、importしてないか、importするための設定をbuild.gradleに書いてないかだろ
771 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 08:39:44.33 ID:hww1W9rh.net] ああそのレベルならimportしてないが有力だな、確かにw
772 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 08:42:59.27 ID:bgzrJhKa.net] ビルド通ったやついるん?
773 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 10:08:54.78 ID:lcEaonpe.net] importしてないならその前でコケるだろjk sdkのバージョン違いじゃないの?
774 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 10:40:04.79 ID:dJOGt5Qc.net] build.gradleのandroid {} のなかに dataBinding { enable = true } 書いて、ObservableField のとこで Alt + Enter すれば、必要なimport が追加されたよ
775 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 11:34:18.64 ID:Fv6I2084.net] return context.getResources().getString(R.string.name, first.get, last.get(); ここの行のfirst.getもfirst.get()のはずだし、公式のサンプルコードがおかしいんじゃねえの
776 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 11:39:55.59 ID:PJj9ZCzu.net] >>748 ありがとうございました!
777 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 14:18:24.41 ID:6R9abQ63.net] kotlinはネット投稿越しの説明デバッグが面倒くさい…
778 名前:デフォルトの名無しさん [2018/07/04(水) 15:27:56.70 ID:hVA06Lo9.net] >>723 に書いたやつはできないがこういうのはできるのな。 val (a, b, c, d, e) = listOf(1, 2, 3, 4, 5) ただし5つまで。理由は component1() 〜 component5() を使うため。
779 名前:デフォルトの名無しさん [2018/07/04(水) 16:47:52.07 ID:n4h9hTEh.net] はい https://goo.gl/k4ehdm
780 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:03:02.55 ID:Uqt21yY2.net] >>768 グロ
781 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:20:22.52 ID:dJOGt5Qc.net] >>766 kotlin はテキストのコピペで説明できるから簡単じゃね? VS使ってるとスクリーンショット使わないと説明できないこと多くて大変
782 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 19:41:26.22 ID:yHhNx3G5.net] >>770 >VS使ってるとスクリーンショット使わないと説明できないこと多くて大変 たとえば?
783 名前:デフォルトの名無しさん mailto:sage [2018/07/04(水) 21:42:39.79 ID:KFDu9ptB.net] それもまたスクリーンショットを使わないと説明できないのです。
784 名前:デフォルトの名無しさん [2018/07/04(水) 21:47:17.49 ID:gFgZc5FG.net] 9MT
785 名前:デフォルトの名無しさん [2018/07/05(木) 06:52:07.84 ID:3UdVdS3q.net] つまりVSは抽象概念だった?
786 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 18:11:14.13 ID:1+w/aSOe.net] JVM系でのことりんのポジションって.Net系だと何になるの?
787 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 18:25:29.62 ID:em8VdMHP.net] すみません。ラムダ式について質問させてください。 純粋にkotlinじゃなくてすみません。 import kotlin.concurrent.* fun main(args:Array<String>){ var a1=Pn("A") var a2=Pn("B") var a3=Pn("C") thread{a1.en()} thread{a2.en()} thread{a3.en()} } class Pn(nm:String){ fun en(){ for(i in 1..5){ println("${nm}:${i}") } } } thread{a1.en()}の波括弧内はラムダ式ということなのですが、 もともとの関数の記述って、どんな記述になりますか? a1:Pn->a1.eat() とかですか?
788 名前:デフォルトの名無しさん [2018/07/05(木) 18:48:07.71 ID:9m4qXusF.net] 質問の意味がわからない
789 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 19:37:20.63 ID:gU4M+kls.net] >>776 いや、そのラムダは引数に何も受け取ってないよ クロージャになってて外側のa1とかの変数をキャプチャしてるだけ JavaScriptとかの書き方で言えば () => { a1.en() } みたいな感じ
790 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:08:46.41 ID:bx98WRX+.net] クロージャ使うのは一苦労じゃ
791 名前:デフォルトの名無しさん [2018/07/05(木) 20:17:49.90 ID:9m4qXusF.net] 【審議中】 ∧,,∧ ∧,,∧ ∧ (´・ω・) (・ω・`) ∧∧ ( ´・ω) U) ( つと ノ(ω・` ) | U ( ・) (・` ) と ノ u-u (l ) ( ノu-u `u-u’. `u-u’
792 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 20:57:09.18 ID:n+w19a7Z.net] >>776 fun lambda1() { return a1.en() } thread( lambda1 )
793 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:45:45.28 ID:zhHpKoz0.net] コチン星は他に転用できないでしょ Javaは何にでも使える コチン星がそうなったら移住してやんよ
794 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:54:46.98 ID:gU4M+kls.net] 逆なんだよなあ
795 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 22:58:33.72 ID:y9cLPe3E.net] 現実には逆だね Kotlin使ってるような奴はJavaはもちろん他にも複数の言語使える
796 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 07:14:19.59 ID:BcpJI+Hp.net] 今kotlin使ってるやつはJavaとSwiftは書けそうだよな あと聞くところによるとずっとRuby使ってたweb系の人たちの間でkotlinの人気があるらしい
797 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 08:51:02.46 ID:8OYGWEQ0.net] KotlinとSwiftは似ているから iOSとAndroidでお互いのコードを参考にしやすいという点でも Kotlinを使ったほうが良いよね
798 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 09:06:38.50 ID:QElqX86J.net] >>778 >>781 ありがとうございました! 納得できました。またよろしくお願いします!感謝です
799 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 09:16:06.34 ID:mA2hlx7s.net] >>786 うちはまさにそれでやってる。 細かい違いはあれど、両者で大体同じ感じに作れるからだいぶ生産性が上がる。
800 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 09:32:23.49 ID:abpU4SXk.net] 「あれをああいうふうにつくりたい」で片方が概念から違うコード塊だとめげるものね せめて見る方向は一緒でないと困る
801 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 09:39:15.11 ID:M3cpa2kA.net] Kotlin, Swift, TypeScript, C#あたりはいいかげん合体して一つになれよとは思う 似たような言語増えすぎ
802 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 09:58:03.13 ID:HP0oeisi.net] アーキテクチャもMVVMで統一しておくとさらにいいね
803 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 10:37:25.30 ID:SXzPAxPV.net] 合体して!
804 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 10:43:05.75 ID:zksWstCG.net] >>785 ruby の特徴が groovy 経由で kotlin にとりこまれてるからねぇ
805 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 10:50:59.18 ID:dSjMYi7e.net] まあHello Worldレベルならどれも大差ないよね
806 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 11:30:17.98 ID:2AM7zbcj.net] >>789 一度作って終わりなら何でもいいけど、機能追加やらメンテやら考えたら極力設計レベルで近づけておきたいからね。 俺は経験ないけどObjectiveCとJAVAでこれやってた人たちほんとすごい。
807 名前:デフォルトの名無しさん [2018/07/06(金) 13:21:00.56 ID:49COMX7t.net] Ruby由来の特徴って? Pythonから取ってきたようなのはちらほらあるけど。
808 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 13:28:11.07 ID:nxtJThkD.net] 信者の布教
809 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 13:44:46.19 ID:q/ghlqNX.net] >>796 なんでもかんでもそれで実装しようとして一応作り上げ公開はするもののメンテできず放置するムラ気の情熱
810 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 14:05:18.34 ID:LdCqv7/c.net] >>796 ヒント:ワシが育てた
811 名前:デフォルトの名無しさん [2018/07/06(金) 15:32:07.66 ID:kKlMDWU3.net] >>799 いいや、わしが育てた。
812 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 15:58:16.16 ID:zvJYjc+f.net] kotlin配列めんどくさすぎwwwwワロタwwwww
813 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:02:32.49 ID:zksWstCG.net] >>796 Kotlin 公式のこのページなんだけど https://kotlinlang.org/docs/reference/type-safe-builders.html むかしは Type-Safe Groovy-Style Builders と呼ばれてた https://github.com/JetBrains/kotlin-web-site/commit/2ed39c423cb7924538551f6fe9a600a333300bb9#diff-67d5deb10a27f44d364720fd321bc192 ドキュメントは修正されちゃったけど、機能が修正されたわけじゃない lambdaを { } で書くのとか、カッコの外に出せるのとか、これ実現するために必須
814 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:15:00.75 ID:CcG3LQ04.net] Kotolinて変数にプリミティブ型が無いけど、 画像処理とか大量にデータ処理すると、Javaより遅くならない?
815 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 16:28:27.50 ID:zksWstCG.net] >>803 ByteArray使えばよいでしょう
816 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 17:00:50.17 ID:CcG3LQ04.net] >>804 配列はDoubleArrayとかあるのね bit演算はushrがあるから、Javaより見易そう(Javaの>>>と>>が見辛過ぎ)なのがいいな そろそろ切り替える踏ん切りがつきそうになった、ありがとう
817 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 20:20:35.42 ID:AbsrypZ1.net] >>803 プリミティブに出来るものは勝手にプリミティブになる Kotlinの fun f1(a:Int, b:Int?, c:List<Int>){} はJavaでの void f1(int a, Integer b, List<Integer> c){} になる https://kotlinlang.org/docs/reference/basic-types.html#representation
818 名前:デフォルトの名無しさん [2018/07/06(金) 21:01:12.71 ID:g8uAR+7L.net] プリミティブ型がなくてもうまいこと最適化されてだいたいは問題なくなるのではないかな?
819 名前:デフォルトの名無しさん [2018/07/06(金) 21:02:17.37 ID:g8uAR+7L.net] うう。リロードし忘れてたらかぶった。
820 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 22:24:17.82 ID:QG6T2BVC.net] >>806-807 Javaのラッパー型とか考え無くていいのか 上手く出来ているんだな
821 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 23:30:21.00 ID:4Ugvbwaw.net] ByteArrayとかIntArrayはJavaの呪い
822 名前:デフォルトの名無しさん mailto:sage [2018/07/06(金) 23:33:34.92 ID:gLP4VBNq.net] えっと
823 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 07:47:51.03 ID:uYnOjfeF.net] >>810 何でそう思う?
824 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 08:02:53.54 ID:1JBcciC6.net] >>810 ほんとそう
825 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 19:26:53.37 ID:XhDuF4YP.net] data classのcopy()というメソッドは 新しいインスタンスを作るの? それともインスタンス変数を書き換えるの?
826 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 20:07:44.59 ID:LTqMROwD.net] >>814 新しいインスタンスを作るよ その際に新しいインスタンスに対してプロパティの差し替えを指定できる
827 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 20:15:10.40 ID:VybllwrG.net] イミュータブルデータ
828 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 22:09:42.29 ID:XhDuF4YP.net] >>815 そうですかコピるんですね、インスタンスはイミューダブルだから ところでデリゲートって何ですか?
829 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 22:10:48.19 ID:uYnOjfeF.net] >>817 繊細とか壊れやすいとか、そういう意味だよ
830 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:35:57.76 ID:Ty8z3s6n.net] それはフラジャイルだろ!
831 名前:デフォルトの名無しさん mailto:sage [2018/07/07(土) 23:38:31.93 ID:qgEX9CeR.net] 小麦粉のこと?
832 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 00:50:39.49 ID:Ju8r78kR.net] Androi
833 名前:dにはデリゲートなんて用語はない [] [ここ壊れてます]
834 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 00:55:04.92 ID:sfogbTE4.net] >>817 ? data class のインスタンスはイミュータブルに作ることもできるけど 別にイミュータブルな保証ないよ 普通に var プロパティ宣言できるし
835 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 04:35:49.01 ID:PDRntQm6.net] >>819 デリケートだろとつっこむところ? >>817 クラスAを継承したクラスBを作るときに、継承を使う代わりに、クラスB内にクラスAのインスタンスを持たせて、 クラスBにおけるクラスAのAPI実装をそのインスタンスに丸投げすること。 インターフェースしか定義されておらず、インスタンスはヘルパークラスからしか作れないような場合に便利。
836 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 08:39:29.95 ID:A+oeHsIU.net] >>817 デリゲートは手動で書く手間を減らす機能だし 動作分かってないと初学者にとって混乱の元だから 「委譲書くの面倒」と思うようになるまで使わなくていい 仕様を知っておきたいならbyキーワードの具体例をググって読むべき
837 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 08:53:04.34 ID:GTRmE3gZ.net] よくあるのは破壊的操作だけ決まった手順でやりたい可変リスト 内部に可変リストを持たせてListインターフェースをこの可変リストに委譲しつつ、 破壊的操作をするメソッドは自分で実装する
838 名前:デフォルトの名無しさん mailto:sage [2018/07/08(日) 13:09:11.90 ID:I8JQ03ez.net] デリゲートゾーンの痒みにデリケア
839 名前:デフォルトの名無しさん mailto:sage [2018/07/09(月) 15:42:24.09 ID:k14wcRqL.net] 2次元配列てどうやって作るの? ググっても、一次元配列の説明しかないんだけど