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/05(日) 14:29:21.23ID:kyKiHR5g
!! は、Nullable を、NotNull に強制変換する、危険な演算子だから、
requireNotNull 関数を使え

例えば、Java から、null が代入される場合、
String → IllegalStateException。ヌルポよりまし
String? → Nullable なのでOK

Platform Type
型を省略(String!) → デリファレンス時に、ヌルポ

Java からの戻り値がすべて、Nullable になるのは困るので、
その折衷案がPlatform Type
6564
垢版 |
2017/11/05(日) 14:35:11.49ID:kyKiHR5g
Java からの戻り値をすべて、Nullable にするのは面倒なので、
そのまま使ったのが、Platform Type

デリファレンス時に、ヌルポとなるため危険!
66デフォルトの名無しさん
垢版 |
2017/11/05(日) 14:40:57.73ID:YBVMpJn0
めんどくせえな
2017/11/05(日) 15:03:32.80ID:cR0WBKoF
Javaのほうのコードに@NonNullアノテーションつけとけば、KotlinからT!じゃなくてTとして扱える
2017/11/05(日) 15:52:17.12ID:WRVCeBNz
現代的な気遣いのされてるJavaライブラリはKotlinからでも便利に扱える
シガラミがあって旧来のままのライブラリはそりゃ利用者側が手間かけるしかない
69デフォルトの名無しさん
垢版 |
2017/11/05(日) 16:52:07.10ID:J++DNvfV
ラッパークラス作るぐらいしか方法なさそうだな
2017/11/05(日) 18:48:00.64ID:WL5EiVt2
ラッパークラスもありだし、OSSなライブラリだったらアノテーション付与してPR送るのも有用だな
2017/11/05(日) 19:23:52.87ID:giKdejUB
Kotlinから使いやすくなりました! みたいに言えるのはひょっとしたら売りになるかもしれんね
2017/11/05(日) 19:25:37.10ID:zDQnBwdh
ことりちゃん、マジ使いやすいぜグフフ
73デフォルトの名無しさん
垢版 |
2017/11/05(日) 19:26:26.36ID:YBVMpJn0
ことりんの擬人化はよ
2017/11/05(日) 20:25:14.58ID:UMg3GOyt
>>33
2017/11/05(日) 22:47:01.75ID:z1YM2S+z
(・8・)
76デフォルトの名無しさん
垢版 |
2017/11/06(月) 10:56:08.46ID:OqkByGQj
やはり擬人化が必要だな
萌えキャラで
2017/11/06(月) 11:49:59.43ID:kblaZiQ3
何のために必要なの?
78デフォルトの名無しさん
垢版 |
2017/11/06(月) 13:01:01.21ID:V0vtn4gd
それは君には中々理解できない理由による。

例えば以前Appleが傾いた時にジョブズが復帰してiMacを作ってAppleは救われたが、iMacはハードウェアとしてそんなに素晴らしかっただろうか?
たいして素晴らしくはないのだ。ブラウン管ディスプレイに本体入れて一体化しただけだ。しかし売れた。なぜか?
デザインがよかったからだ。コンピュータとしてはどうでもいい見た目が売れ行きに多大に影響した。
技術者から見ればどうでもよさそうなものでも甘く見てはいけないということだ。
2017/11/06(月) 13:32:09.21ID:wZC/0idP
>>77
技術的な話をスレでされても理解できなくて不愉快だから「とにかくほかの話」をさせたがっている
知らない言語のスレなんて見なきゃいいのにね
2017/11/06(月) 15:15:58.89ID:DlVzck/L
goが人気になった要因もgopher君が半分くらいあるからな。ことりんはいいな
81デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:18:23.96ID:8DS1P3Ga
ほんとおまえらはばかだなあ
日本の電子IT系なんてオタクの巣窟なんだから萌えキャラことりんで流行言語間違いなしやで
2017/11/06(月) 16:21:48.60ID:kblaZiQ3
うわぁ、、、
2017/11/06(月) 16:34:20.33ID:9YhppvEm
ことりんとペアプログラミングしたい
2017/11/06(月) 19:29:33.22ID:otMLf3Eu
「ことりん」のライバルが「ざまりん」で草
85デフォルトの名無しさん
垢版 |
2017/11/06(月) 20:50:33.70ID:iuxlkbQ9
インアクションとなんとか太郎本どっち買おう
後者は本屋で見たんだけど
2017/11/06(月) 21:11:27.46ID:RNAOm4Mq
目指すとこがちゃうからな
現在どのくらい習熟してるかにもよるかと
2017/11/07(火) 06:11:35.45ID:uepCx6fG
「たのしいRuby 第5版、2016」高橋 征義
「みんなのPython 第4版、2017」柴田 淳
「Kotlinスタートブック、2016」長澤 太郎

この辺は、日本では、避けては通れない人達
2017/11/07(火) 06:23:46.73ID:W6HmiFf1
逆に避けなくてはいけない人達はだれ?
2017/11/07(火) 07:22:52.64ID:atDIxfPJ
掌田津耶乃
2017/11/07(火) 08:53:40.81ID:kYRdbaxp
掌田津耶乃
91デフォルトの名無しさん
垢版 |
2017/11/07(火) 12:19:01.95ID:yzrwY/tJ
そうなの?どういう点がまずいの?
2017/11/07(火) 12:37:41.70ID:08KjVeec
内容が薄い
93デフォルトの名無しさん
垢版 |
2017/11/07(火) 12:40:11.22ID:yzrwY/tJ
なるほど。
濃いめなのは?
2017/11/07(火) 12:53:17.32ID:atDIxfPJ
>>91
公式のチュートリアルをパクって
チョコっと変えて解説してるだけ
2017/11/07(火) 14:06:00.83ID:uepCx6fG
掌田津耶乃は、ほとんどの言語・フレームワーク・開発環境の、本を書いてる

売れ筋では、必ず顔を出す。
売れる分野に、掌田あり!
2017/11/07(火) 17:10:16.14ID:qyKBmVxs
公式見て自習しろや、が通じるならセミナーとか講演会とか必要ないわけでな(いや、これに関しては別に必要ないとは思ってるが)
世の中の需要はあんまりロジカルではないのだ
2017/11/07(火) 21:38:52.62ID:tWasbjrL
>>85
太郎しか読んでないでActionは買ったばかりだけど、
Javaは一通りで来てKotlinをとりあえずやってみたいなら太郎、
Kotlinにどっぷり漬かることが確定しているならAction?かな
いずれにしてもJavaの理解はないとかなり不利。

>>95
器用貧乏というやつですね、わかります。
2017/11/07(火) 22:51:30.64ID:6NdbJPOz
昔の河西か
2017/11/07(火) 23:03:28.24ID:kYRdbaxp
入門書ばっかり書いて金儲けするのが目的なんだろう
2017/11/07(火) 23:20:19.14ID:hhPr1fc6
やってみるとわかるのだが(やらなくてもいいが)、中上級者向けの本というのは全然儲からないのだ
書くの時間かかるし分厚くなって値段高くなるし売れなくなるしチェック内容増えるし時代遅れが混じるし下手すると共書だし
出来によっては「あのすごい便利な本を書いた人」という称号はいくらかの称賛になり、ひょっとしたら生活豊かルートをも開拓するかもしれないが、分は悪い
初心者向けの本をひとりで年に2冊くらい書いてたほうが、志低いと揶揄されながらもきちんと生活できるのさ
2017/11/08(水) 01:07:22.53ID:3tNQk30d
粗製濫造して食う飯はうまいか
2017/11/08(水) 01:24:37.30ID:pvxNciwf
やってみるとわかるとな?
2017/11/08(水) 05:57:05.62ID:Z7LnM2jK
掌田津耶乃って何者? (Late 2012)
http://egg.2ch.net/test/read.cgi/mac/1349360916/

1 :Mac Fan Letterより転載 [sage] :2012/10/04(木) 23:28:36.22 ID:ZGQCgQTH0
● ネットサーフの溺死者たち
「友がみな我より偉く見ゆる日よ」

「2チャンネル」という最低最悪のサイトがある。
2017/11/08(水) 06:28:34.57ID:ShM00Q+N
>>94
器用貧乏とは言ったものの、翻訳書が原書+1000円くらいの値段になることがざらなことを考えると
英語の公式チュートリアルを訳しただけでも、値段相応なのかもしれん。

しかし、著者のことをよく知らずにタイトルだけでうっかり買ってしまったものの身にもなって欲しい(自己責任)
深く理解した上で書かれた本かどうかは、(本を必要とするレベルの人には)立ち読み程度ではわからない。
2017/11/08(水) 08:32:48.67ID:a/cZ4nXd
Kotlinに限らずあれもこれも全く初心者に寄り添っていないことを鑑みると、初心者向けの本を書くというだけで価値があるのやもしれぬ
あなたがライブラリマニュアル作るときに開発環境のダウンロードやプログラミング言語の文法から説明しないのと同じだ
2017/11/09(木) 10:27:49.04ID:IVrwQxMl
「単純に意味や役割が似通ってるメソッドを集めただけのメソッド集」を表すものってないですかね
Rubyでいうmoduleみたいなやつ
特にどのオブジェクトに属してるってわけでもない、誰も初期化しなくてよくてすぐメソッドが使えるやつ
いまobjectでシングルトンクラスにしてるけど、なんか漂う特別感に違和感が
2017/11/09(木) 12:13:06.41ID:77e4Bz/I
適当なネームスペースで、メソッドじゃなくて関数だけ複数定義したファイルを作ればいいんじゃないかな?
2017/11/09(木) 13:29:13.78ID:IVrwQxMl
ああなるほど、packageで分ければいいのか…
シングルトンクラスの中に書くよりはしっくりくる…ような…気が…す…うん、そういうものだと思うことにします
2017/11/09(木) 21:56:51.74ID:+8G/D3P4
Kotlinで以下の処理をスマートに書き直したらどうなりますか

int idx = -1;
for (int i=0; i<list.size(); i++) {
  if (list[i].data == data) {
    idx = i;
    break;
  }
}
(idxを使った処理)
2017/11/09(木) 22:05:39.85ID:UXPTP/DS
val idx = list.indexOfFirst{ it.data == data }
111デフォルトの名無しさん
垢版 |
2017/11/09(木) 22:25:18.35ID:UmUHoiDy
逆引き、ポケットリファレンスものを出して
2017/11/09(木) 22:52:38.14ID:+8G/D3P4
>>110
サンクス!まさか1行でできてしまうとは。。
Android Studioに貼り付けてもこうはならないよね
113デフォルトの名無しさん
垢版 |
2017/11/10(金) 09:13:11.87ID:oAWKYFWM
>>111
とりあえずここで質問すれば答えが書かれるので、後でまとめページを作れば良い。
2017/11/10(金) 09:42:49.25ID:ju9EA6eo
Kotlin、、怖ろしい子。。
2017/11/11(土) 02:40:35.26ID:BhMQDmGd
じゃばの妹ことりん
116デフォルトの名無しさん
垢版 |
2017/11/11(土) 03:22:51.50ID:xG+5Xfzv
>>115
なんだその国民の妹みたいな表現は
2017/11/11(土) 10:02:03.10ID:N7WPFjKT
ことりん星からやったきたことりん
2017/11/11(土) 10:10:11.58ID:ydtAG8Bz
>>117
それ最後に爆発するやつじゃんw
2017/11/11(土) 11:27:33.83ID:GExxj/Q0
お前ら「よーし新しく覚えたKotlinのあんな技こんな技使ってコーディングするぞー」
〜 数日後コードレビュー 〜
リーダー「あー、これ全部Javaと同じ感じで作り直しといてネ、ヨロシク」
2017/11/11(土) 13:22:59.28ID:2zKmkyWC
ゆうこりん
2017/11/11(土) 14:04:32.65ID:7fLEJN4j
>>119
コーディングルールでピュアJava使えってなってるならただのアホだろw
2017/11/11(土) 21:12:50.74ID:F2DPX6tK
>>121
トップがKotlinへの移行を目指して次はKotlinとJavaの混在プロジェクトにするとか言って、
でも所属するチームのトップがJavaしか使わないとかいうシナリオなら、
>>119のような事が起きたとしても>>121の言うような矛盾はない...と思う。
123122
垢版 |
2017/11/11(土) 21:14:35.14ID:F2DPX6tK
そして逆コンパイルしたJavaを提出して盛大に怒られる...みたいな。

こんなことで連投してスマン
2017/11/12(日) 01:41:23.15ID:x+b1eGgz
そんな会社辞めちまえ
2017/11/12(日) 02:34:42.29ID:0YSprajH
君、セミコロンを忘れているよ。
126デフォルトの名無しさん
垢版 |
2017/11/13(月) 09:38:49.46ID:Ffr39/Md
2017/11/15(水) 06:46:05.48ID:cIMRwHcF
>>126
君、中身を忘れているよ^^;
128デフォルトの名無しさん
垢版 |
2017/11/15(水) 12:16:34.07ID:XQCt13cq
println(";")
2017/11/15(水) 12:45:09.17ID:P+eW6LIt
ぷりんとりん
130デフォルトの名無しさん
垢版 |
2017/11/15(水) 17:33:26.94ID:NOd3J7Vc
そういや print って印刷って意味だよな。もはや時代も変わり誰も印刷してないのにプログラミング言語では print で出力が定番になっちゃったな。
2017/11/15(水) 18:04:14.40ID:svkVDlGw
厳密には印字なのでギリギリ合ってる
原初のBASICのPRINT対象はテレタイプだったから印刷するという意図とはそもそもちょっとだけ違う
2017/11/15(水) 18:13:51.46ID:B4seksg+
ポワトリン
133デフォルトの名無しさん
垢版 |
2017/11/15(水) 20:09:08.28ID:hiEIJUlA
ブラウン管に文字を焼き付けるから print

無理があるな。
134デフォルトの名無しさん
垢版 |
2017/11/16(木) 10:46:41.50ID:Wcsn/bEa
printの古い意味は押すだからな
2017/11/16(木) 11:23:36.83ID:pe2ew9X7
そういえば昔、プリントごっこで押しまくってたな
136デフォルトの名無しさん
垢版 |
2017/11/16(木) 11:54:15.38ID:czRbGJih
putもあるやん
137デフォルトの名無しさん
垢版 |
2017/11/16(木) 12:14:02.89ID:Wcsn/bEa
>>136
putは置く
138デフォルトの名無しさん
垢版 |
2017/11/16(木) 16:02:46.86ID:bDWmFK6d
押して痕跡残すようなのが print だな。
2017/11/16(木) 20:15:28.89ID:Sk98YgzR
kotlinの文法ってちょっと省略しすぎだし、やりすぎじゃねぇの・・・
C#の方がバランス取れてるわ。
2017/11/16(木) 21:14:22.81ID:3Aqd/ZMZ
>>139
具体的にはどういう文法のこと言ってるの?
141デフォルトの名無しさん
垢版 |
2017/11/17(金) 08:55:38.80ID:YqqDZ5Dd
慣れの問題だと思うけどなあ
2017/11/17(金) 09:43:27.88ID:Ddb5xKAY
抽象化と少ないコードが正義な昨今の風潮ではこういう文法が受ける
本当にこれで良かったのかは後10年ぐらいしたらわかるだろう
2017/11/17(金) 09:59:51.99ID:QGpoznNs
>>140
どれがとは言いにくいけど>>139の言いたいこともわかる気がする。
個人的にはコンストラクタをクラス宣言に書けば、フィールドやコンストラクタの宣言を省略できる仕様とか。
2つ以上のコンストラクタを定義したり複雑なコンストラクタを定義しようとするときの表現に一貫性がなくなったと思う。
フィールド(Kotlinではプロパティだっけ)の記述場所もクラス宣言と本体にバラバラの配置になるし。

Javaにしとけばいいのかもしれないけど、null安全に書いてみたいと思って使っている。
あとwhenがお気に入り。
2017/11/17(金) 10:24:11.98ID:welKudTx
CP/M80上で動くKotlin処理系が無い…
2017/11/17(金) 10:46:54.88ID:8xh7qM4F
これはこれで同じこと書いてる感がん〜って感じではある
class MyData(name: String, age: Int){
val name = name
val age = age
}
引数にval書けちゃうことでの「見かけ一貫性の破れ」と「引数もチェックしなければならなくなったという手間」は肯定する
2017/11/17(金) 10:51:53.19ID:ENBrszFD
というかあれはdataクラスを便利に書くためだけのギミックな気がするぞ
しかし言われてみれば視線的にめっちゃ遠いのはその通りだな、家のやつは今度使わずに書いてみるか
147デフォルトの名無しさん
垢版 |
2017/11/17(金) 11:08:33.26ID:YqqDZ5Dd
>>144
JavaVMが動かんわw
2017/11/17(金) 15:22:12.81ID:4edLbtL+
KotlinがNull安全といっても結局、Javaなどの使用するクラスライブラリがNull安全じゃないからな。
Kotlinだけで閉じてればいいけど、Kotlin最小限のライブラリしか用意してねぇし。どうすりゃいいんでしょうか??
「!!」演算子積極的に使えばいいの?
2017/11/17(金) 15:36:01.97ID:ocCweAVX
自分のメソッドは全部ヌルポ無しにすればいい。
2017/11/17(金) 15:42:27.11ID:4edLbtL+
うん。自分のメソッドはNot Nullにしてるけど、その実装で結局、Javaのクラスが絡む事多いから、
その実装部分で「!!」連発してるんだけど、なんだかなぁ・・・・・
2017/11/17(金) 15:49:49.94ID:ENBrszFD
ぬるぽが出そうならトラップするという記法がKotlinにはいくつもあるだろそれ使え

chackNotNull(nullable){ "ぬるぽだけは阻止しましたが例外で落ちますさようなら" }
nullable?.aaa?.bbb ?: throw RuntimeException("エラーとぬるぽって死ぬ点で大差なくね?")
when(){
nullable == null -> println("おかあさんに言いつける")
isSomeState -> nullable.xxx.yyy // 文脈上nullが来得ないので ?. で書かなくていい
}
2017/11/17(金) 15:51:51.91ID:ENBrszFD
ああまた空whenに()つけてる
毎回間違って毎回IDEに文句言われるんだよなこれ
2017/11/17(金) 16:16:30.86ID:4edLbtL+
>ぬるぽが出そうならトラップ
ぬるぽが出そうというより、Javaのクラスから返される型は「型名!」ってAndroid Studioを
表示されてて、この型ってNullableの「型名?」と同じでNullチェックしないといけないと思ってて
「!!」連発してたんだが、これ違うな・・・

「型名!」ってNullチェックしなくてもいいのか・・・
つか、言語仕様上どんな扱いになってんだこれ・・
2017/11/17(金) 16:19:43.26ID:4edLbtL+
>>60で質問したときに、>>61で答えてもらって
ただのIDEの表示上の事なんだと思ってたが違うのか??
2017/11/17(金) 16:38:25.33ID:ENBrszFD
T? と T or T? は違うよ
Nullableかどうかすらわからない後者の場合はnullチェックしなくてもコンパイルは通るよ
「だってそれはNullableではないから」
まあ、そしてぬるぽが出るんだけども
Kotlin的にはnullチェックは不要だけどIDE的にはnullが入りうることがわかってるので気を付けてね! の ! だ
2017/11/17(金) 17:00:12.18ID:4edLbtL+
>>155
ありがとうございます。
Platform Typesについてしっかり読んでませんでした。そこに色々書いてありましたね。
157デフォルトの名無しさん
垢版 |
2017/11/17(金) 17:09:53.72ID:4edLbtL+
>T? と T or T? は違うよ
T or T?がプラットフォーム型というやつですかね。で、プラットフォーム型ではNullチェックが緩和される
って書いてありましたね。

T? と T or T? は同じと勘違いしてました。要はT or T?か分からないから、よりたくさん表現できるT?として扱えばいいし、
そうなってるのかと勘違いしてました。
2017/11/17(金) 17:41:51.36ID:4edLbtL+
つか、デバッグしてて思ったけど、C#のusing (resource)やlock文に相当する言語組み込みの
文がkotlinにないのがちょっとめんどくさいよね。ステップオバーで順にどんどん進めねぇじゃねぇか・・
inputStream.use {
 // いちいちここにブレークポイント設定しないと・・・
}とかだと、実態は関数呼び出しだから、ステップオーバーだと、内部のブロック飛び越えちゃう・・
2017/11/17(金) 17:57:25.06ID:ENBrszFD
ステップイン/ステップアウトではだめなのか
2017/11/17(金) 18:06:21.43ID:4edLbtL+
ああ、ステップインで行けたね。ステップインすると、最初useなどの拡張関数の方にぶっとぶかと思ったけど、
自分のブロックの方に直接飛べるのか。
まぁ、オーバー・インを切り替えるのひと手間だけど、まぁそれぐらいなら。
2017/11/17(金) 20:50:48.90ID:4edLbtL+
正直、AndroidのJavaの代替としてKotlinを使うなら、Android Studio 3.0でJavaで全APIレベルでラムダ式が
使えるようになったらしいし、後、Javaにvarなどのローカル変数の型推論あたりがくれば、Javaでも
いいかなと思うが(async/awaitもほしいけど)、Kotlin for JavaScriptの存在を知って、
ちょうど、JavaScriptとかスクリプト言語を本格的に使った事なく動的型付け言語使いたくない自分にぴったしだと
思ってKotlin覚えてみようかなと思ってきた。

Kotlin,JavaScriptでググってもあんま引っかからんけど、TypeScriptとかにとって代わったりしそうじゃねぇか??
162デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:21:37.83ID:3GAWOghK
>>161
> Javaにvarなどのローカル変数の型推論あたりがくれば

それ実現されるまでまってられっかよ
2017/11/17(金) 21:40:35.61ID:/4Y2zvAi
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python, Lua に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Kotlin = Java + Groovy

Haxe, Kotlin, Ruby をやると、他の言語がクソに見える
2017/11/17(金) 22:45:03.99ID:mCQOvNmw
Hexe ってドイツ語で魔女って意味だな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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