Kotlin 2

■ このスレッドは過去ログ倉庫に格納されています
2017/11/01(水) 00:07:43.82ID:jxmKQQAl
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org

前スレ
Kotlin
http://mevius.5ch.net/test/read.cgi/tech/1456505161/
2017/11/19(日) 17:52:32.52ID:OIO3sRlf
>>180
3例とも同じ動作想定のサンプルコードだよ
オープン不可はnullでなく例外、どこで例外が起きても開いた分はcloseされる

>>182
そう、キモいってだけ
実行のタイミングと順序は厳密に決まるからどこでcloseが起こるかは分かる
closeの仕掛けとブロック増加が不可分なのが気に入らないという話
2017/11/19(日) 19:48:25.52ID:8FVAlHGr
>>179
if文で中括弧を省略できるのと一緒
2017/11/19(日) 20:14:04.01ID:wMfO08BI
kotlinはまず開発環境をもっと整えてほしいわ。
特にVisual Studio Codeで無料の拡張プラグインを。
JetBrainはIDEを打ってる会社なのかもしれんが・・
2017/11/19(日) 20:34:18.95ID:OIO3sRlf
>>184
すまんそれがどう「ほぼそれと同じ構文」に繋がるのかイメージ出来ない
>>176の例だとどうなる?
2017/11/19(日) 20:38:00.92ID:ziYSLzJF
forを読めるが書けない
これだけが毎回全く覚えられない(あの形式はレガシーであって何の意味もないと思う)
イテレータでいいと思うのだが、Rangeはなにやら遅いとか言われてて憂鬱だ
2017/11/19(日) 20:49:57.92ID:8FVAlHGr
>>186
書いてみ
2017/11/19(日) 21:05:03.09ID:OIO3sRlf
>>188
いや、イメージ出来ないから書いてよ
2017/11/19(日) 21:12:25.17ID:rL41c0pH
>>178,185
誤 : JetBrain
正 : JetBrains
2017/11/19(日) 21:19:58.43ID:8FVAlHGr
>>189
ifの中括弧省略と一緒と聞いて本当にわからないのであれば重症やな
2017/11/19(日) 21:50:45.20ID:OIO3sRlf
>>191
煽ってくる意味が分からない
具体例を示すだけだと思うんだが・・・
2017/11/19(日) 22:15:39.30ID:VtdgNv5T
>>176はそんなにopenとcloseをしないといけないのはクラス設計に問題があるのではないだろうか。
そこまでしないといけないことが頻繁にあるケースはまれだと思うので、拡張関数を定義して解決しては。
あと、個人が気に入らないと思うたびに構文を増やしたらC++みたいになるのは歴史が示すところかと。

>>173
Kotlinでは>>176のケースはif式のように{}を省略することはできないような気がするのですが。
省略できても見かけのブロックがなくなるだけで、多重ネスト構造なのは変わらない気がする。
194デフォルトの名無しさん
垢版 |
2017/11/20(月) 00:57:34.61ID:iI7hyhyt
>>191
俺も分からないので是非書いて欲しい。
こちらはKotlin学習中なので重症ではない。単にわからないだけだ。
2017/11/20(月) 03:18:31.42ID:GkhyFhEh
>>177
File.open(ファイル名) do |file|
処理
end

Ruby では、File.open()に、クロージャの実装である、ブロックを渡すと、
close()する必要がなくなる。
自動的に内部的に、例外処理で囲んで、finally で、close してくれる

たいていの言語で、そう
196デフォルトの名無しさん
垢版 |
2017/11/21(火) 07:47:12.65ID:UlNCYsFF
JVM版とNative版など環境がいくつかあるけど、標準ライブラリは基本共通なの?
197デフォルトの名無しさん
垢版 |
2017/11/21(火) 11:37:34.13ID:y9fg6IYd
こういう風に違うシグネチャの関数の参照はどうしたら良いのか?
https://ideone.com/jXVu5V
2017/11/21(火) 12:00:29.42ID:7oGfHzA7
未対応なので回避策とるくらいしか
val fa = {n:Int -> f(n) }
val fb = {n:Int, s:String -> f(n, s) }
199デフォルトの名無しさん
垢版 |
2017/11/21(火) 12:29:26.29ID:y9fg6IYd
あ。未対応だったのか。どうりでいくら調べても見つからないと思った。
それならそんな風に書くしかないね。
2017/11/21(火) 13:08:24.36ID:7oGfHzA7
>>199
ごめん変数/引数の型指定があれば解決出来るみたい
https://ideone.com/CzyR3A
201デフォルトの名無しさん
垢版 |
2017/11/21(火) 14:11:23.59ID:tR+VGZDq
>>200
おー。なるほど。ありがとう。

まあでも自分でシグネチャ指定して振り分ける感じに書く必要はあるということだね(Cでの関数へのポインタみたいなもんだからそうならざるを得ないか)。
2017/11/21(火) 21:30:56.20ID:PjtBzSS0
>>196
コアの標準ライブラリは原則共通だが、JS, JVM(, Natevie)ごとに専用の「標準」ライブラリがある。
https://kotlinlang.org/api/latest/jvm/stdlib/index.html
2017/11/25(土) 13:24:58.89ID:x3Ny6L+y
あるメソッドの中の処理を切り出して作った1行系プライベートメソッドってあるよね
親メソッドの前に書いたほうがいい? 後に書いたほうがいい?
親メソッドに長いJavaDoc、または長めのコメントがある場合、前に書いちゃうとプライベートメソッドが離れちゃって見難い/醜いよね

  // subするメソッド
  private fun subMethod() = ...

  /*
  * メインなことをするメソッド
  * がんばってつくりました
  * 3行も説明書いたのでボーナスください
  */
  fun mainMethod(arg: SomeObj){
   ...
  }

そういう意味ではメインのあとに書いたほうがいいんだけど、親メソッド読んでる最中に見たことないメソッドが出てきちゃって「ん??」ってなるよね

  fun mainMethod{
   ...
   ....subMethod(...) ← えっコレ何?
  }

  private fun subMethod() = ←定義ここかよおせーよ

Java書いたことないからこのへんの作法わかんないんだけど、なにか傾向とかあるのかな
2017/11/25(土) 14:14:06.62ID:UdkhV+zK
IDEの機能で定義に飛ぶから別に気にならない
ソースファイルを上から順に眺めていくってあんまりないなあ
2017/11/25(土) 14:31:50.70ID:uI9d/XUE
どっちでもいいけど自分は後ろ。
定義なんてIDEでジャンプできるんだしどうでもいいでしょ。
2017/11/25(土) 22:18:25.21ID:x3Ny6L+y
>定義に飛ぶから
>定義なんてIDEでジャンプできる
なんだよ

(いろいろ眺めつつ)IntelliJ IDEAではF4かな。とう。おお。…さっきのとこ戻るにはどうすればいいんだろう
https://youtrack.jetbrains.com/issue/IDEA-119474
無理か。まあいいや
いや、それにしても固めて書いておく時の一般的なやり方とか見てて迷わない書き方とかあるのかなーと思って
2017/11/25(土) 23:17:25.05ID:O9/4xpc9
>>206
subMethodのKDocをしっかり書いておけば、ジャンプしなくてもマウスオーバーで
何をするメソッドかわかるから後置でいいのではと思う。
2017/11/26(日) 00:38:59.47ID:ReeFqnN/
戻るのはデフォルトだとたぶん Ctrl+Alt+左

定義に飛んでその後戻るのをキーボードで素早くできるようにしとかないと作業が捗らんから、
おれはどんな環境でもAlt+ピリオドとAlt+カンマにカスタマイズする
たまにカスタマイズできない環境もあるが
2017/11/26(日) 01:48:55.48ID:uWNno6dr
>>206
F4ではなくCTRL+マウスクリックじゃない?
2017/11/26(日) 02:41:23.75ID:ReeFqnN/
F4 は "Jump to Source" で、Ctrl+Button1 は "Decraration" だね
両方とも定義へ飛ぶけど、定義を選択して操作したときに "Decraration" のほうは使用箇所へ飛ぶメニューがでるね
おれは間違えて押したときにメニューでるのが面倒なのでキーにカスタマイズして使ってるのは "Jump to Source" の方
使用箇所へ飛びたいときには Find usages を使うし
2017/11/26(日) 12:28:30.17ID:uWNno6dr
あー
F4でjump to sourceし
CMD+F4 (Macの場合)でタブクローズすればいいんじゃない
あと、quick definitionってのもある
2017/11/26(日) 13:15:15.98ID:X819E48M
vimのプラグイン入れてるけどcommand+[ですぐ戻れる
2017/11/26(日) 13:19:18.06ID:uWNno6dr
基本はそれですね、開いたタブを同時に閉じたい場合はcloseかな
2017/11/26(日) 23:28:16.74ID:ReeFqnN/
Jump to SourceとDecrarationの違いを、もうひとつ見つけてしまった
DecrarationはAndroid環境だとリソースIDからレイアウトXMLへ飛んだりもできるのね
Jump to SourceだとリソースIDそのものの値を定義してるファイルに飛んじゃうので意味無い

やっぱデフォルトはDecrarationにしよう・・・
2017/11/27(月) 11:07:32.61ID:nNid/MSo
haskellとか知ってると、まず宣言的コードがあって実装はあとからついてくるコードスタイルでも違和感はない。
トップダウンで見るかボトムアップで見るかの違い。
2017/11/27(月) 14:13:27.80ID:NQTs/ol9
まあ、IDEさまさまなところはあるにはある
IDEがなかったら全然違っていただろうなと思う事象は多い
2017/11/28(火) 17:13:53.17ID:tIAa+Uq8
IDEってEclipse?AndroidStudioのベータ?
2017/11/28(火) 18:39:50.36ID:FPBjC+Ob
JetBrains製以外のIDE使ってる人居るのかな
Vimは居そう
2017/11/28(火) 19:03:29.92ID:nX0y7tBa
>>217
そら第一候補はIntelliJでしょ
≒ Android Studio
2017/11/28(火) 19:50:02.49ID:9tkU9YCi
Eclipseとか原始時代の道具をまだ使ってるやつがいるのか
221デフォルトの名無しさん
垢版 |
2017/11/28(火) 20:45:44.51ID:jRr2P5U7
他の言語で使えるからな
2017/11/28(火) 20:54:28.46ID:KE6VY8J8
Linuxなんてずっと原始時代のままだよ。
223デフォルトの名無しさん
垢版 |
2017/11/28(火) 20:58:14.84ID:jRr2P5U7
ん?でも Linux でも IntelliJ 使えるよ。
2017/11/28(火) 20:59:52.92ID:KE6VY8J8
まだみんなviだよ。
225デフォルトの名無しさん
垢版 |
2017/11/28(火) 21:09:08.70ID:jRr2P5U7
ああ。まあ。確かにviってかvim使う方が多いが、さほど困らんなあ。
2017/11/28(火) 22:43:55.76ID:TzRq1z8j
リモートデスクトップ経由でLinuxのIntelliJ&Android Studio使ってうっひょーって言ってるよ
Emacsのkotlin-modeがぜんぜんイマイチなのはIntelliJ IDEAのせいではないかと思っている
2017/11/29(水) 12:14:21.94ID:UK37Nyfh
IdeaVimプラグインおすすめ
2017/11/29(水) 12:23:23.58ID:HtxXnaax
1.2がリリースですよ?
2017/11/29(水) 12:38:07.31ID:rN1pofYI
>>226
IDEAがあるせいで他がしょぼいというより、Kotlinの歴史の浅さやまだゴミのようなシェアの割にはIDEAの出来が良いんだろ
Kotlin自体がJetBrainsによってIDEAで使うために作った言語なんだから当然
230デフォルトの名無しさん
垢版 |
2017/11/29(水) 12:52:25.81ID:3kSmCAWV
>>227
ああ。あれいいね。
2017/11/29(水) 14:26:22.47ID:LyP2QHxX
Kotlinはidea以外の環境を最低一つサポートしろよな。自社でIDEを売ってるからやだとかはやめてくれ。
VisualStudio Codeかatomのどっちかの軽量環境は最低どちらかサポートしろよ。
2017/11/29(水) 15:11:26.12ID:xfNGuvaJ
言語提供側がすべきなのは処理系の提供であって
IDE云々で文句を言うのは筋違い
2017/11/29(水) 15:12:57.24ID:Z0yAcQLL
それは処理系に言う筋合いのものではないが。
最近のエコシステムに慣れすぎるとそう言いたくなるのはわからんでもないが。
234デフォルトの名無しさん
垢版 |
2017/11/29(水) 15:22:03.64ID:nwFY0Upv
いや分からん
2017/11/29(水) 15:29:21.72ID:LyP2QHxX
使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい。
ユーザーにとって使いやすくしたいとおもってて、他がやらないなら
最終的に言語提供側が提供すればいいだけだし。
2017/11/29(水) 15:30:52.57ID:LyP2QHxX
もちろん、JetBrainsの開発リソースも限られてるが、そんなの使う側からしたら
それもどうでもいい。使いやすければユーザーが増える可能性あるし、使いにくければないだろう。
ただそれだけ。
2017/11/29(水) 15:34:28.47ID:xfNGuvaJ
>>235
1行目からして意味が分からん
処理系が何か分かって書いているのか?
2017/11/29(水) 15:42:48.79ID:LyP2QHxX
>>237
ごめんごめんww
「処理系」に関してはそれは完全にとちくるってた
2017/11/29(水) 15:45:22.41ID:LyP2QHxX
>使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい

>使う側からしてみれば、言語提供側だろうが言語提供側以外だろうがどうでもいい
あたりでw
2017/11/29(水) 19:04:08.56ID:UK37Nyfh
時代はジェットブレインなんだよ
MicrosoftのVisualStudioとかいう原始時代の道具は時代遅れ
2017/11/29(水) 19:06:37.15ID:azEm6Mj/
microsoftはjavaとあんまりかんけーし
2017/11/29(水) 19:26:30.80ID:Ut1ew1uc
かんけーし
2017/11/29(水) 19:33:24.71ID:X5HBmKqd
Kotlinで文字列を返すenumを使うときは、
やっぱりJavaと同じようにnameとかtoStringを呼ばないといけませんか?


例えば↓のようなenumがあったときに
enum class Name(name: String) {
Foo("foo")
}

"foo"を使うときはこうすると思います
val name = Name.Foo.name()

しかし、name()が気に入りません。↓のようにはできませんでしょうか
val name = Name.Foo
2017/11/29(水) 21:00:19.88ID:FLL8HsjL
>>240
あほ
245デフォルトの名無しさん
垢版 |
2017/11/29(水) 21:05:55.88ID:9RrEnJIt
天才
2017/11/29(水) 21:23:58.21ID:Vh6sORy3
>>240
骨董品UNIXより常に20年先行ってる。
2017/11/29(水) 21:27:39.83ID:Vh6sORy3
>>241
MS製JVMは性能が良すぎてみなそれを使うようになり、Sunに訴えられたから捨てたんだぞ。
2017/11/29(水) 21:53:07.67ID:DIMn1CuR
J#だったからじゃないのか
2017/11/29(水) 21:59:56.13ID:DBojqp7K
>>243
Name.Fooがenumのメンバーを返さないのなら、enumじゃなくてもいいのではない?
2017/11/29(水) 22:09:21.88ID:puYUWHlJ
今やUnix向けの開発者も揃ってVSCodeだもんなあ
開発環境ではMSには敵わないよ
Kotlinは遠からずVSCodeに持ってかれるだろうけど、そうなったらJetBrainsはどうするんだろうね
2017/11/29(水) 22:24:40.91ID:UK37Nyfh
アホすぎ
ジェットブレインの開発環境を使ってないのは
IT後進国の日本だけだぞ
2017/11/29(水) 22:34:19.00ID:X5HBmKqd
>>249
そうかもしれません
Kotlinで文字列の定数をまとめて扱うにはどうするのがベストですか?
2017/11/29(水) 22:41:01.71ID:sTR8OUxJ
>>250
> 今やUnix向けの開発者も揃ってVSCodeだもんなあ
を3回くらい読んで何を指してるのかなんとなくわかった
サーバサイドのスクリプト言語プログラミングもVSCodeで行われることは増えた
EmacsでFTPやらSSHやらして一生懸命書いてた頃とは隔世の感はある
(いや、まあ、ぶっちゃけるなら、Emacs+xx-modeがVSCode+プラグインに置き換わっただけではあるが)
VSCodeはElectronを捨てることができた瞬間に勝利が確定する
2017/11/29(水) 23:18:26.84ID:WrxHm4nG
>>250
資金力ではMSに太刀打ちできるはずのないJetBrainsはGoogleに買収されるべきなのだろうか。
>>241
むしろMSはJ#の時代から.NETさらには最近のXamarinの買収まで一貫してJavaに敵対的だよね。
>>228
めでたい。
2017/11/30(木) 00:12:49.49ID:B6eqzLgy
>>253
捨てたらもうそれVSCodeじゃない気がw
2017/11/30(木) 01:09:11.23ID:Ok7wKsk4
>>252
Javaからの見え方を気にしないのならこれでもいいかな?
object Name { val Foo = "foo" }
2017/11/30(木) 01:58:01.88ID:M/qZYVPC
>>256
なるほど、これでいっぱいval書いたら良さそうですね
ありがとうございました
2017/11/30(木) 03:05:42.40ID:4Ii001tY
>>248
おまえなんにも知らないんだな
2017/12/02(土) 18:09:11.30ID:hkowUbEW
IntelliJをバージョンアップしたらSpekテスト設定のSpec欄ヨコのSearch by Nameが動かなくなった
これまではモジュール適当に指定したら勝手に探して候補出してくれてマウスぽちぽちで済んだのだが、なんかspec欄を自力入力で埋めないといかん
それともこれは普通は使わない所だったのだろうか
2017/12/03(日) 14:17:27.57ID:KOJqmKfW
多分日本で俺だけだろうけど、
Kotlinの公式PDFはフォントのAlignがずれてて
読み始めて1分しない内に直視に耐えられなくなってしまう…。

直そうと頑張ってみたが有料ソフト使うしかないみたいで諦めた。
しかし治ってたら嬉しいなと定期的にダウンロードし直してしまう。
2017/12/03(日) 16:45:59.74ID:CjASQeE2
"sourcefiles"という名の.ktソースファイル名一覧ファイルを作り、

kotlinc @sourcefiles

を走らせると、

error: source file or directory not found: @sourcefiles

が画面に表示されてしまいます。

javac @sourcefiles
scalac @sourcefiles

に相当する機能はkotlincには無いのでしょうか?
2017/12/03(日) 19:45:07.83ID:daSNjmBL
質問の答えは知らないので他の人に任せるけど
ビルドはkotlinc直よりGradle使うことを勧める
263デフォルトの名無しさん
垢版 |
2017/12/03(日) 20:02:35.94ID:8YyVv9+M
またそんなこと言って。
あなたはいつも他人任せね。
いいかげん私も待ちくたびれちゃうわ。
2017/12/03(日) 20:37:07.64ID:1V67aEN5
なんで女言葉なの?
265デフォルトの名無しさん
垢版 |
2017/12/03(日) 22:21:28.14ID:8rz+kd7O
だって女と思わせた方が答えが出やすいんですもの
2017/12/03(日) 23:10:58.68ID:D7S9aojy
>>262
正しい
可能ならIDE使って欲しいけどね
いまはgradle安定
2017/12/03(日) 23:18:52.67ID:CdnEE9AY
Gradle, Vagrant は、yaml, XML, JSON のような、単なる設定ファイルではなく、

それ自体が、Groovy, Ruby の、クロージャ・ブロックで囲まれた、
スコープを持つソースコードであるから、変数宣言や処理も書ける
268デフォルトの名無しさん
垢版 |
2017/12/04(月) 00:39:28.22ID:1VMjnc7g
>>265
逆におっさんにしかみえん
2017/12/04(月) 18:53:03.40ID:wtgBoDUa
>>265
キモい
>>263
たとえ女だとしてもキモい。やるならもっと自然な文体にしてくれww
270デフォルトの名無しさん
垢版 |
2017/12/04(月) 18:54:32.14ID:nKJqxEpH
うふ
271デフォルトの名無しさん
垢版 |
2017/12/04(月) 20:08:06.27ID:4Cie7nT5
(´・ω・`)うふふ
2017/12/04(月) 20:18:46.16ID:s6dQomLc
リアルの女と接点がなく、妄想で女はこうだろうと決めて話してるのがわかる
昭和生まれのジジイですわ
2017/12/04(月) 20:51:56.16ID:59vQQL00
謎のマジレスマンが居ますね
2017/12/04(月) 22:06:40.20ID:dW7+efaY
マジレズマン
275デフォルトの名無しさん
垢版 |
2017/12/04(月) 22:11:31.07ID:GD7rAYrg
マジレスマンつまらないわね
276デフォルトの名無しさん
垢版 |
2017/12/05(火) 00:40:05.91ID:AwrHp2sF
(´・ω・`)ほんとよね
2017/12/05(火) 00:49:05.55ID:6UYDf8NM
Kotlin Advent Calendar がAndroid以外の話題多めだな
ここでナチュラルにIntellijIDEA の話題だしちゃったけど
Android以外の人も IntellijIDEA を買って使ってるのかねえ?
2017/12/05(火) 01:18:19.27ID:LDxS5CId
12/18にこの本が出るようだ。Amazonには本の表紙画像がまだ出ていない。

Androidアプリ開発のためのKotlin実践プログラミング
http://amzn.asia/4GO28m2
2017/12/05(火) 07:55:54.23ID:y4Wcjyaa
KotlinはAndroidが対応したってだけでそのためだけに使う人は少数派やろ
280デフォルトの名無しさん
垢版 |
2017/12/05(火) 09:05:47.31ID:lXQHSkZJ
いやあ、しかし楽にはなりそうだからねえ、流行ると思うけどねえ。
2017/12/05(火) 09:10:49.28ID:AdXR2ViJ
なんだ秀和システムか
2017/12/05(火) 09:18:48.22ID:jRPOQw5f
なぁーんだ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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