Kotlin 3

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/03/19(月) 04:26:26.03ID:GqsfT9Tb
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org

前スレ
Kotlin 2
https://mevius.5ch.net/test/read.cgi/tech/1509462463/
2018/07/06(金) 14:05:18.34ID:LdCqv7/c
>>795
ヒント:ワシが育てた
799デフォルトの名無しさん
垢版 |
2018/07/06(金) 15:32:07.66ID:kKlMDWU3
>>798
いいや、わしが育てた。
2018/07/06(金) 15:58:16.16ID:zvJYjc+f
kotlin配列めんどくさすぎwwwwワロタwwwww
2018/07/06(金) 16:02:32.49ID:zksWstCG
>>795
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を { } で書くのとか、カッコの外に出せるのとか、これ実現するために必須
2018/07/06(金) 16:15:00.75ID:CcG3LQ04
Kotolinて変数にプリミティブ型が無いけど、
画像処理とか大量にデータ処理すると、Javaより遅くならない?
2018/07/06(金) 16:28:27.50ID:zksWstCG
>>802
ByteArray使えばよいでしょう
2018/07/06(金) 17:00:50.17ID:CcG3LQ04
>>803
配列はDoubleArrayとかあるのね
bit演算はushrがあるから、Javaより見易そう(Javaの>>>と>>が見辛過ぎ)なのがいいな
そろそろ切り替える踏ん切りがつきそうになった、ありがとう
2018/07/06(金) 20:20:35.42ID:AbsrypZ1
>>802
プリミティブに出来るものは勝手にプリミティブになる

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
806デフォルトの名無しさん
垢版 |
2018/07/06(金) 21:01:12.71ID:g8uAR+7L
プリミティブ型がなくてもうまいこと最適化されてだいたいは問題なくなるのではないかな?
807デフォルトの名無しさん
垢版 |
2018/07/06(金) 21:02:17.37ID:g8uAR+7L
うう。リロードし忘れてたらかぶった。
2018/07/06(金) 22:24:17.82ID:QG6T2BVC
>>805-806
Javaのラッパー型とか考え無くていいのか
上手く出来ているんだな
2018/07/06(金) 23:30:21.00ID:4Ugvbwaw
ByteArrayとかIntArrayはJavaの呪い
2018/07/06(金) 23:33:34.92ID:gLP4VBNq
えっと
2018/07/07(土) 07:47:51.03ID:uYnOjfeF
>>809
何でそう思う?
2018/07/07(土) 08:02:53.54ID:1JBcciC6
>>809
ほんとそう
2018/07/07(土) 19:26:53.37ID:XhDuF4YP
data classのcopy()というメソッドは
新しいインスタンスを作るの?
それともインスタンス変数を書き換えるの?
2018/07/07(土) 20:07:44.59ID:LTqMROwD
>>813
新しいインスタンスを作るよ
その際に新しいインスタンスに対してプロパティの差し替えを指定できる
2018/07/07(土) 20:15:10.40ID:VybllwrG
イミュータブルデータ
2018/07/07(土) 22:09:42.29ID:XhDuF4YP
>>814
そうですかコピるんですね、インスタンスはイミューダブルだから


ところでデリゲートって何ですか?
2018/07/07(土) 22:10:48.19ID:uYnOjfeF
>>816
繊細とか壊れやすいとか、そういう意味だよ
2018/07/07(土) 23:35:57.76ID:Ty8z3s6n
それはフラジャイルだろ!
2018/07/07(土) 23:38:31.93ID:qgEX9CeR
小麦粉のこと?
2018/07/08(日) 00:50:39.49ID:Ju8r78kR
Androidにはデリゲートなんて用語はない
2018/07/08(日) 00:55:04.92ID:sfogbTE4
>>816

data class のインスタンスはイミュータブルに作ることもできるけど
別にイミュータブルな保証ないよ
普通に var プロパティ宣言できるし
2018/07/08(日) 04:35:49.01ID:PDRntQm6
>>818
デリケートだろとつっこむところ?
>>816
クラスAを継承したクラスBを作るときに、継承を使う代わりに、クラスB内にクラスAのインスタンスを持たせて、
クラスBにおけるクラスAのAPI実装をそのインスタンスに丸投げすること。
インターフェースしか定義されておらず、インスタンスはヘルパークラスからしか作れないような場合に便利。
2018/07/08(日) 08:39:29.95ID:A+oeHsIU
>>816
デリゲートは手動で書く手間を減らす機能だし
動作分かってないと初学者にとって混乱の元だから
「委譲書くの面倒」と思うようになるまで使わなくていい

仕様を知っておきたいならbyキーワードの具体例をググって読むべき
2018/07/08(日) 08:53:04.34ID:GTRmE3gZ
よくあるのは破壊的操作だけ決まった手順でやりたい可変リスト

内部に可変リストを持たせてListインターフェースをこの可変リストに委譲しつつ、
破壊的操作をするメソッドは自分で実装する
2018/07/08(日) 13:09:11.90ID:I8JQ03ez
デリゲートゾーンの痒みにデリケア
2018/07/09(月) 15:42:24.09ID:k14wcRqL
2次元配列てどうやって作るの?
ググっても、一次元配列の説明しかないんだけど
2018/07/09(月) 16:07:50.43ID:HEVR++FY
「Kotlin 多次元配列」とかでググれば出てくるけど、もっと簡単に作れるようにしてほしいよな
Kotlinはコレクション周りが面倒
2018/07/09(月) 16:22:32.46ID:uw3CHAwx
ありがとう!多次元配列ででました
リストの中のリストみたいな作り方しかできないんですね
2018/07/09(月) 16:25:07.73ID:a7X8gOns
Java11で多次元配列が追加されるっぽいし
そのとき一緒にKotlinにも追加されるんじゃないかな
2018/07/09(月) 19:41:02.60ID:2W9i2TNQ
>>828
でもそれは多次元配列ではないからな
全世界から激しくツッコミ入るからな
「ネストした配列」とかきちんと表現しよう
2018/07/09(月) 19:42:26.58ID:CMpb5of+
本当の多次元配列とネストした配列の違いってなんなの
2018/07/09(月) 19:59:47.17ID:upwaJxXn
だっちゅーの
2018/07/09(月) 20:40:00.23ID:2EXLNjt4
>>831
配列の配列: n個入る内箱をm個並べて入れた外箱、実際には内箱に入る数はそれぞれ違うこともある
二次元配列: 最初からn*mで仕切られた箱

得意なこと、苦手なことも、箱を入れた箱と最初から全部仕切られた箱の関係と似ている

Java自体が真性の多次元配列ないからKotlinにもないんじゃね
ScalaとかGroovyにも真性の多次元配列はないのだろう
2018/07/09(月) 20:55:27.19ID:CMpb5of+
それって、メモリは所詮一次元だけど
n×mの連続領域確保して[][]でアクセスできるインターフェース提供できれば二次元配列って言えるってこと?
ポインタの配列にしなければいいってことかな??
835デフォルトの名無しさん
垢版 |
2018/07/09(月) 20:56:07.10ID:NIgnyVo4
多次元配列みたいにアクセスできるクラス作って中で一次元配列を全容素数作ってアクセスする時に n * y + x のように計算してアクセスするの作れば、まあなんとなく気分を味わう事はできるな。
あとはうまいこと最適化されて効率よくなる事を祈るのみ。
836デフォルトの名無しさん
垢版 |
2018/07/09(月) 20:57:03.20ID:NIgnyVo4
うう。リロードしてなかったらなんとなく内容が被った。orz
2018/07/09(月) 21:13:13.46ID:2EXLNjt4
>>834
おおむねそういうこと
配列の配列は縦方向と横方向でアクセスのコストが違うとか
多次元配列は、行をまるごと取り出そうとすると新規に配列を作る必要があるとか、違いがいろいろある

Kotlinに真性の多次元配列はないけど、仮にあったらイテレーションする時も変わってくるはず。

for (item in twoDimesionalArray) { println(item) }

for (innerArray in arrayOfArray) {
for (item in innerArray) { println(item) }
}
2018/07/09(月) 22:15:19.94ID:NSgi36DG
普通のプログラミングよりPythonのnumpyとかMATLABとか科学技術計算やってた人はイメージしやすいかもね
2018/07/09(月) 23:30:34.66ID:1ah1GiNN
マンピー?
2018/07/10(火) 00:37:38.55ID:lPJyrY2R
>>837
なるほどありがとう
2018/07/10(火) 06:58:10.69ID:IxsE6k10
>>839
なるほどありがとう
2018/07/10(火) 07:38:02.37ID:LbQkaO6y
ほとんどの言語は、配列の配列(jaggy 配列)だろ

表で言えば、同じ行内の列データは連続しているけど、
各行のデータは連続していない

1行目の各列は連続しているけど、
1行目と2行目は、別の場所にある
2018/07/10(火) 08:14:20.19ID:UVYr8NpU
計算コストを度外視すれば多次元配列でできることは大抵配列の配列で実現できるから、そこまで気にする必要はないんだけどね
2018/07/10(火) 09:17:54.93ID:xdf1qrhG
さも重大事のように煽っといてなんだその結論は
2018/07/10(火) 11:02:23.47ID:4/WJyavM
まあよっぽどカリッカリのパフォーマンスを求められるシビアな要件じゃない限りいらんわな
もしその差がそんなに重要ならとっくに色々な言語で実装されてる
2018/07/10(火) 14:19:24.23ID:nhRVi4l7
tensorkotlin
2018/07/10(火) 22:11:35.45ID:y/3n5Cpu
>>834が言ってる通りで
糖衣構文的なものがあるかどうか程度の差

パフォーマンスが必要な部分はハードウェアアクセラレーションのため
java.awt.imageみたいにAPI経由するからDSL表現力さえあれば後はライブラリの役割
2018/07/11(水) 06:23:53.16ID:xk2F4E8W
配列は一次元、嫁は二次元だからそれぞれ1つずつ次元が上がって欲しい。
2018/07/11(水) 09:10:45.05ID:A6luu057
現在三次元の嫁はどうなりますか
850デフォルトの名無しさん
垢版 |
2018/07/11(水) 09:18:11.28ID:/4kd3SWK
3次元嫁は都市伝説
2018/07/11(水) 09:29:45.16ID:RuBHX//D
オンデマンドで呼び出せるんじゃね

呼び出し料金かかるけど
2018/07/12(木) 11:23:31.16ID:xhtZxHU1
Kotlinで書けるSPAフレームワークって無いの?
JSとかTS面倒なんだけど
2018/07/12(木) 11:38:40.09ID:nnJijZVz
TSなら面倒というほど大した差はないだろ
むしろVSCodeで鬼のように補完が効く分、フロントでの生産性は圧倒的にTSのほうが上
2018/07/12(木) 12:25:18.13ID:ut9WLbMZ
補完に関してはKotlin+IntelliJIDEAのほうが上だろ
TSのフロントでの生産性が圧倒的なのには同意だが
2018/07/12(木) 13:25:44.38ID:9wyU7EsK
VSCode程の糞はない
2018/07/12(木) 14:32:59.18ID:3OhKsAp4
え?
VSCodeが糞かはともかくそれ以上の糞なんかJava系に限ってもeclipseとかNetBeansとかいくらでもあるだろ
2018/07/12(木) 18:21:16.24ID:EedZr1tw
Netbeansはひどいよなあ
あれMPLABのベースに使われててクソイライラする
ファイルの管理周りがとくにひどい
microchipはatmel買収したんだからatmelスタジオに追加すればいいのに糞が
2018/07/12(木) 19:05:58.45ID:ZfcOFQ2e
>>856
このスレのお約束フレーズだからマジレスすんな
2018/07/12(木) 19:07:03.83ID:ZfcOFQ2e
そういやeclipseにもkotlinプラグインあるらしいけど、わざわざeclipse使ってる奴いるのだろうか
860デフォルトの名無しさん
垢版 |
2018/07/12(木) 19:15:27.87ID:cdBPRXqc
>>859
他のプロジェクトも色々やっててそうしないと切り替えるのが面倒とか、あるいは会社でそれしか使っちゃ駄目って事になってるとか。
2018/07/12(木) 19:59:34.30ID:aA43Ofcz
>>859
一度使おうとしたけど、インテリさん使ったらインテリすぎて戻れなくなった
ただ、インテリさんはWeb関連の便利機能が有料なんで、そこらへんは月食さんの方が良いな
2018/07/12(木) 20:02:55.71ID:WF2aS5Vl
Androidで連続計測アプリを作るなら、
RxKotlinがいいの?
2018/07/12(木) 22:51:04.77ID:mvC68ILq
>>859
1年以上前に使ってみたことがあるが、Javaのプロジェクトにまでエラーが頻発して使い物にならなかった。
なお、KotlinがAndroid公式に採用されて以降、この1年でほとんど開発は進んでいない模様。
釣った魚に餌はやらない、みたいな。
2018/07/13(金) 05:53:34.32ID:m41AHQph
>>861
IDEAの年額って、どう考えても払うだけの価値はあるほどエクリプスンより生産性上がるだろ
少なくともツール自体を動かすために余計な苦労は要らなくなる
2018/07/13(金) 06:43:02.63ID:EUOoQR1t
大量のプラグインのバージョン管理とか設定調整とかどう考えても時間の無駄だからなー
2018/07/13(金) 06:55:12.32ID:Ee6EtEgb
30日試用もあるけどひとまず1年分買って試すのも良いと思うな
2018/07/13(金) 07:58:16.06ID:ov74f2Px
>>865
年間通したらそれだけで数万円分の工数はとられるよな
2018/07/13(金) 08:09:45.54ID:ov74f2Px
Vimとかも自分で育てていく楽しさはあるんだけど、道具として割り切るなら箱出してほぼ何もせずとも全て揃ってるIDEAさんが最強なんだよなあ。
AndroidとiPhoneもそんなイメージだけど。
2018/07/13(金) 09:03:03.39ID:CVNDg+4c
xcode程の糞はない
2018/07/13(金) 09:20:51.97ID:5TLJeRCv
VSCodeはJava開発環境としてはMS自身によるプラグイン開発によって既に普通に使えるレベルに達してる
さすがにKotlinはJBとガチ喧嘩になるからMS自身は手を出さないだろうけど、
IntelliJが死んだらKotlinも当然自動的に消えるわけで、MSを調子に乗らせないためにもJBにはなんとか頑張ってほしい
2018/07/13(金) 09:21:39.47ID:7kFLYEGJ
VScodeほどの神はいない
2018/07/13(金) 09:46:20.22ID:n6HMRhww
マジレスすると、
MS嫌いだけどVScodeは使いやすいよね
昔はEmacsとか使ってたけど、VScode使い始めて戻れなくなった
2018/07/13(金) 09:56:45.72ID:cQfKwCET
Emacsはマジで瀕死みたいだな。Atomに食われてVSCodeでとどめを刺された。
2018/07/13(金) 10:04:34.44ID:SHnopJX1
むかしむかし使い古しpcにDebianいれてゴニョゴニョ設定してxemacsを起動できたときめっちゃ感動した
2018/07/13(金) 11:55:19.72ID:CVNDg+4c
vimの完全勝利
876デフォルトの名無しさん
垢版 |
2018/07/13(金) 12:44:49.86ID:fxcd0vFw
ま、vimは軽いし何も考えなくて良いのがいいよな。
ただしサンプルプログラムのようなとても短くて小規模なプログラム作る時なw
2018/07/13(金) 13:16:53.00ID:CVNDg+4c
vimは単体で使うだけでなく、
プラグインという形で各種エディタ, IDEに組み込まれている
もはやコードを書くという行為はvimを使うことと同等
vimも使いこなせないようなやつはエンジニア向いてないね
2018/07/13(金) 13:24:28.27ID:vWSrkCkJ
お、そうだな
2018/07/13(金) 13:46:43.72ID:r56MKyep
VSCodeはVimプラグインもクソ優秀なんだよな
IDEとしての機能性とVimらしい快適性をこれほど高い次元で両立できるエディタは10年煮詰めたVimを除けば他にない
2018/07/13(金) 14:03:48.40ID:5yynDKDH
VSCodeのプラグインが優秀過ぎて他に移れない
シーケンス図とか描くのもすげー便利だし
2018/07/13(金) 14:15:06.91ID:LloFxrI0
IntelliJで開いたときに、赤も黄色も出ないコードを書くものだけが、Vimを使いなさい。
2018/07/13(金) 15:38:16.85ID:RC8GAzHb
シーケンス図なんて作らせるようなところでもkotlinだのvscodeだの使わせてくれるものなのか
2018/07/13(金) 17:17:34.83ID:4N3JeixC
intellijよりvsのほうがコード補完優秀だよね
頻繁に使うものが上位に来るし
intellijだとcって打つとCamera()とか一度も使ってないものががいきなり候補に出るし
2018/07/13(金) 17:37:39.30ID:L1uFjowm
intellij+補完で検索すると、わりと多機能で驚く
2018/07/13(金) 17:47:43.71ID:r56MKyep
VSの補完は機能とかそういう段階をとっくに卒業してる
ついに機械学習を使って文脈を理解する超補完を搭載するらしいな
2018/07/13(金) 18:36:03.53ID:n6HMRhww
みんなインテリとVSCどう使い分けてんの?
Kotlinはインテリで、それ以外の言語はVSCって感じ?
2018/07/13(金) 18:47:06.02ID:m41AHQph
jsだけVSで他はインテリんだな
正直Rubyとかどちらで書いても大差ないから、わざわざ乗り換えてない
2018/07/13(金) 19:34:40.82ID:ojWLt4Rx
cだけでCameraとかでてこないぞ?
Camまで打つとCameraクラスが候補の二番目に出てくるが
小文字のcじゃ下まで見てもCameraが候補に無い
2018/07/13(金) 19:39:27.08ID:Uh3oS1ye
黙って猫を使うべ
2018/07/13(金) 19:58:31.98ID:FZV/D1H9
Camera程の糞はない
891デフォルトの名無しさん
垢版 |
2018/07/13(金) 20:48:04.46ID:WQBoNRJ+
>>877
今日は釣れませんね。
2018/07/13(金) 20:53:25.87ID:WQBoNRJ+
>>881
「彼らはそれを聞くと、年長者たちから始めて、ひとりひとり出て行き、
そしてvimを使う者は誰もいなくなった。」
2018/07/13(金) 22:19:52.15ID:4N3JeixC
>>888
何が候補にでるかマチマチ
Colorが出てきたりもするし
とにかく直前に入力したやつが出てこなくてイライラするわ
2018/07/13(金) 22:58:51.51ID:e4KiRV9a
>>893
日本語入力じゃないんだから直前に入力したのに優先的に出てこられても困る
Android Studio kotlin は文法的に入力可能なものがだいたい順番変わらず出てくるんで、候補がまちまちってことは無いと思うぞ?

直前に入力したやつが文法的に正しくて、その名前を文法的に正しい位置に再度挿入しようとするなら、普通2〜3文字入力すれば出てこない?
2018/07/13(金) 23:00:22.87ID:e4KiRV9a
あと俺の環境じゃ、小文字 c で、Camera や Color は絶対でてこない感じ
2018/07/14(土) 00:34:59.12ID:Aep6lVRC
まあCameraが出るかはライブラリによるんだけど
頼むからまず変数名優先してほしい
すぐ上にval cellがあるのに…
使ったこともないメソッドやクラスが第一候補になるんだよ
2018/07/14(土) 07:51:18.68ID:JQ0iUrKc
だから普通のAndroidのプロジェクトだとCameraはimportすれば使える状態なんだってば
だからCameまで入力すれば候補の一番に出てくる
でも小文字cだと候補全部見ても出てこない
大文字小文字区別するから

あと、関数内のローカル変数は候補の一番上にでてくるよ?
val cell がある関数内なら、cell が候補の最初にでてくる
アルファベット順みたいだから val ccc があればそっちが先になるけど
2018/07/14(土) 08:21:46.85ID:JQ0iUrKc
いま気が付いたけど補完候補のウィンドウの右下のアイコンで順番変更できるね
Aとπを切り替えられる
Sort by relevance がπで、これはローカル変数が先に出てくる
Sort lexicographically がAで、種類に関係なくアルファベット順にソートされて出てくる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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