JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
前スレ
Kotlin
http://mevius.5ch.net/test/read.cgi/tech/1456505161/
探検
Kotlin 2
■ このスレッドは過去ログ倉庫に格納されています
2017/11/01(水) 00:07:43.82ID:jxmKQQAl
228デフォルトの名無しさん
2017/11/29(水) 12:23:23.58ID:HtxXnaax 1.2がリリースですよ?
229デフォルトの名無しさん
2017/11/29(水) 12:38:07.31ID:rN1pofYI >>226
IDEAがあるせいで他がしょぼいというより、Kotlinの歴史の浅さやまだゴミのようなシェアの割にはIDEAの出来が良いんだろ
Kotlin自体がJetBrainsによってIDEAで使うために作った言語なんだから当然
IDEAがあるせいで他がしょぼいというより、Kotlinの歴史の浅さやまだゴミのようなシェアの割にはIDEAの出来が良いんだろ
Kotlin自体がJetBrainsによってIDEAで使うために作った言語なんだから当然
230デフォルトの名無しさん
2017/11/29(水) 12:52:25.81ID:3kSmCAWV >>227
ああ。あれいいね。
ああ。あれいいね。
231デフォルトの名無しさん
2017/11/29(水) 14:26:22.47ID:LyP2QHxX Kotlinはidea以外の環境を最低一つサポートしろよな。自社でIDEを売ってるからやだとかはやめてくれ。
VisualStudio Codeかatomのどっちかの軽量環境は最低どちらかサポートしろよ。
VisualStudio Codeかatomのどっちかの軽量環境は最低どちらかサポートしろよ。
232デフォルトの名無しさん
2017/11/29(水) 15:11:26.12ID:xfNGuvaJ 言語提供側がすべきなのは処理系の提供であって
IDE云々で文句を言うのは筋違い
IDE云々で文句を言うのは筋違い
233デフォルトの名無しさん
2017/11/29(水) 15:12:57.24ID:Z0yAcQLL それは処理系に言う筋合いのものではないが。
最近のエコシステムに慣れすぎるとそう言いたくなるのはわからんでもないが。
最近のエコシステムに慣れすぎるとそう言いたくなるのはわからんでもないが。
234デフォルトの名無しさん
2017/11/29(水) 15:22:03.64ID:nwFY0Upv いや分からん
235デフォルトの名無しさん
2017/11/29(水) 15:29:21.72ID:LyP2QHxX 使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい。
ユーザーにとって使いやすくしたいとおもってて、他がやらないなら
最終的に言語提供側が提供すればいいだけだし。
ユーザーにとって使いやすくしたいとおもってて、他がやらないなら
最終的に言語提供側が提供すればいいだけだし。
236デフォルトの名無しさん
2017/11/29(水) 15:30:52.57ID:LyP2QHxX もちろん、JetBrainsの開発リソースも限られてるが、そんなの使う側からしたら
それもどうでもいい。使いやすければユーザーが増える可能性あるし、使いにくければないだろう。
ただそれだけ。
それもどうでもいい。使いやすければユーザーが増える可能性あるし、使いにくければないだろう。
ただそれだけ。
237デフォルトの名無しさん
2017/11/29(水) 15:34:28.47ID:xfNGuvaJ238デフォルトの名無しさん
2017/11/29(水) 15:42:48.79ID:LyP2QHxX239デフォルトの名無しさん
2017/11/29(水) 15:45:22.41ID:LyP2QHxX >使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい
は
>使う側からしてみれば、言語提供側だろうが言語提供側以外だろうがどうでもいい
あたりでw
は
>使う側からしてみれば、言語提供側だろうが言語提供側以外だろうがどうでもいい
あたりでw
240デフォルトの名無しさん
2017/11/29(水) 19:04:08.56ID:UK37Nyfh 時代はジェットブレインなんだよ
MicrosoftのVisualStudioとかいう原始時代の道具は時代遅れ
MicrosoftのVisualStudioとかいう原始時代の道具は時代遅れ
241デフォルトの名無しさん
2017/11/29(水) 19:06:37.15ID:azEm6Mj/ microsoftはjavaとあんまりかんけーし
242デフォルトの名無しさん
2017/11/29(水) 19:26:30.80ID:Ut1ew1uc かんけーし
243デフォルトの名無しさん
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
やっぱりJavaと同じようにnameとかtoStringを呼ばないといけませんか?
例えば↓のようなenumがあったときに
enum class Name(name: String) {
Foo("foo")
}
"foo"を使うときはこうすると思います
val name = Name.Foo.name()
しかし、name()が気に入りません。↓のようにはできませんでしょうか
val name = Name.Foo
244デフォルトの名無しさん
2017/11/29(水) 21:00:19.88ID:FLL8HsjL >>240
あほ
あほ
245デフォルトの名無しさん
2017/11/29(水) 21:05:55.88ID:9RrEnJIt 天才
246デフォルトの名無しさん
2017/11/29(水) 21:23:58.21ID:Vh6sORy3 >>240
骨董品UNIXより常に20年先行ってる。
骨董品UNIXより常に20年先行ってる。
247デフォルトの名無しさん
2017/11/29(水) 21:27:39.83ID:Vh6sORy3 >>241
MS製JVMは性能が良すぎてみなそれを使うようになり、Sunに訴えられたから捨てたんだぞ。
MS製JVMは性能が良すぎてみなそれを使うようになり、Sunに訴えられたから捨てたんだぞ。
248デフォルトの名無しさん
2017/11/29(水) 21:53:07.67ID:DIMn1CuR J#だったからじゃないのか
249デフォルトの名無しさん
2017/11/29(水) 21:59:56.13ID:DBojqp7K >>243
Name.Fooがenumのメンバーを返さないのなら、enumじゃなくてもいいのではない?
Name.Fooがenumのメンバーを返さないのなら、enumじゃなくてもいいのではない?
250デフォルトの名無しさん
2017/11/29(水) 22:09:21.88ID:puYUWHlJ 今やUnix向けの開発者も揃ってVSCodeだもんなあ
開発環境ではMSには敵わないよ
Kotlinは遠からずVSCodeに持ってかれるだろうけど、そうなったらJetBrainsはどうするんだろうね
開発環境ではMSには敵わないよ
Kotlinは遠からずVSCodeに持ってかれるだろうけど、そうなったらJetBrainsはどうするんだろうね
251デフォルトの名無しさん
2017/11/29(水) 22:24:40.91ID:UK37Nyfh アホすぎ
ジェットブレインの開発環境を使ってないのは
IT後進国の日本だけだぞ
ジェットブレインの開発環境を使ってないのは
IT後進国の日本だけだぞ
252デフォルトの名無しさん
2017/11/29(水) 22:34:19.00ID:X5HBmKqd253デフォルトの名無しさん
2017/11/29(水) 22:41:01.71ID:sTR8OUxJ >>250
> 今やUnix向けの開発者も揃ってVSCodeだもんなあ
を3回くらい読んで何を指してるのかなんとなくわかった
サーバサイドのスクリプト言語プログラミングもVSCodeで行われることは増えた
EmacsでFTPやらSSHやらして一生懸命書いてた頃とは隔世の感はある
(いや、まあ、ぶっちゃけるなら、Emacs+xx-modeがVSCode+プラグインに置き換わっただけではあるが)
VSCodeはElectronを捨てることができた瞬間に勝利が確定する
> 今やUnix向けの開発者も揃ってVSCodeだもんなあ
を3回くらい読んで何を指してるのかなんとなくわかった
サーバサイドのスクリプト言語プログラミングもVSCodeで行われることは増えた
EmacsでFTPやらSSHやらして一生懸命書いてた頃とは隔世の感はある
(いや、まあ、ぶっちゃけるなら、Emacs+xx-modeがVSCode+プラグインに置き換わっただけではあるが)
VSCodeはElectronを捨てることができた瞬間に勝利が確定する
254デフォルトの名無しさん
2017/11/29(水) 23:18:26.84ID:WrxHm4nG255デフォルトの名無しさん
2017/11/30(木) 00:12:49.49ID:B6eqzLgy >>253
捨てたらもうそれVSCodeじゃない気がw
捨てたらもうそれVSCodeじゃない気がw
256デフォルトの名無しさん
2017/11/30(木) 01:09:11.23ID:Ok7wKsk4257デフォルトの名無しさん
2017/11/30(木) 01:58:01.88ID:M/qZYVPC258デフォルトの名無しさん
2017/11/30(木) 03:05:42.40ID:4Ii001tY >>248
おまえなんにも知らないんだな
おまえなんにも知らないんだな
259デフォルトの名無しさん
2017/12/02(土) 18:09:11.30ID:hkowUbEW IntelliJをバージョンアップしたらSpekテスト設定のSpec欄ヨコのSearch by Nameが動かなくなった
これまではモジュール適当に指定したら勝手に探して候補出してくれてマウスぽちぽちで済んだのだが、なんかspec欄を自力入力で埋めないといかん
それともこれは普通は使わない所だったのだろうか
これまではモジュール適当に指定したら勝手に探して候補出してくれてマウスぽちぽちで済んだのだが、なんかspec欄を自力入力で埋めないといかん
それともこれは普通は使わない所だったのだろうか
260デフォルトの名無しさん
2017/12/03(日) 14:17:27.57ID:KOJqmKfW 多分日本で俺だけだろうけど、
Kotlinの公式PDFはフォントのAlignがずれてて
読み始めて1分しない内に直視に耐えられなくなってしまう…。
直そうと頑張ってみたが有料ソフト使うしかないみたいで諦めた。
しかし治ってたら嬉しいなと定期的にダウンロードし直してしまう。
Kotlinの公式PDFはフォントのAlignがずれてて
読み始めて1分しない内に直視に耐えられなくなってしまう…。
直そうと頑張ってみたが有料ソフト使うしかないみたいで諦めた。
しかし治ってたら嬉しいなと定期的にダウンロードし直してしまう。
261デフォルトの名無しさん
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には無いのでしょうか?
kotlinc @sourcefiles
を走らせると、
error: source file or directory not found: @sourcefiles
が画面に表示されてしまいます。
javac @sourcefiles
scalac @sourcefiles
に相当する機能はkotlincには無いのでしょうか?
262デフォルトの名無しさん
2017/12/03(日) 19:45:07.83ID:daSNjmBL 質問の答えは知らないので他の人に任せるけど
ビルドはkotlinc直よりGradle使うことを勧める
ビルドはkotlinc直よりGradle使うことを勧める
263デフォルトの名無しさん
2017/12/03(日) 20:02:35.94ID:8YyVv9+M またそんなこと言って。
あなたはいつも他人任せね。
いいかげん私も待ちくたびれちゃうわ。
あなたはいつも他人任せね。
いいかげん私も待ちくたびれちゃうわ。
264デフォルトの名無しさん
2017/12/03(日) 20:37:07.64ID:1V67aEN5 なんで女言葉なの?
265デフォルトの名無しさん
2017/12/03(日) 22:21:28.14ID:8rz+kd7O だって女と思わせた方が答えが出やすいんですもの
266デフォルトの名無しさん
2017/12/03(日) 23:10:58.68ID:D7S9aojy267デフォルトの名無しさん
2017/12/03(日) 23:18:52.67ID:CdnEE9AY Gradle, Vagrant は、yaml, XML, JSON のような、単なる設定ファイルではなく、
それ自体が、Groovy, Ruby の、クロージャ・ブロックで囲まれた、
スコープを持つソースコードであるから、変数宣言や処理も書ける
それ自体が、Groovy, Ruby の、クロージャ・ブロックで囲まれた、
スコープを持つソースコードであるから、変数宣言や処理も書ける
268デフォルトの名無しさん
2017/12/04(月) 00:39:28.22ID:1VMjnc7g >>265
逆におっさんにしかみえん
逆におっさんにしかみえん
269デフォルトの名無しさん
2017/12/04(月) 18:53:03.40ID:wtgBoDUa270デフォルトの名無しさん
2017/12/04(月) 18:54:32.14ID:nKJqxEpH うふ
271デフォルトの名無しさん
2017/12/04(月) 20:08:06.27ID:4Cie7nT5 (´・ω・`)うふふ
272デフォルトの名無しさん
2017/12/04(月) 20:18:46.16ID:s6dQomLc リアルの女と接点がなく、妄想で女はこうだろうと決めて話してるのがわかる
昭和生まれのジジイですわ
昭和生まれのジジイですわ
273デフォルトの名無しさん
2017/12/04(月) 20:51:56.16ID:59vQQL00 謎のマジレスマンが居ますね
274デフォルトの名無しさん
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 (´・ω・`)ほんとよね
277デフォルトの名無しさん
2017/12/05(火) 00:49:05.55ID:6UYDf8NM Kotlin Advent Calendar がAndroid以外の話題多めだな
ここでナチュラルにIntellijIDEA の話題だしちゃったけど
Android以外の人も IntellijIDEA を買って使ってるのかねえ?
ここでナチュラルにIntellijIDEA の話題だしちゃったけど
Android以外の人も IntellijIDEA を買って使ってるのかねえ?
278デフォルトの名無しさん
2017/12/05(火) 01:18:19.27ID:LDxS5CId279デフォルトの名無しさん
2017/12/05(火) 07:55:54.23ID:y4Wcjyaa KotlinはAndroidが対応したってだけでそのためだけに使う人は少数派やろ
280デフォルトの名無しさん
2017/12/05(火) 09:05:47.31ID:lXQHSkZJ いやあ、しかし楽にはなりそうだからねえ、流行ると思うけどねえ。
281デフォルトの名無しさん
2017/12/05(火) 09:10:49.28ID:AdXR2ViJ なんだ秀和システムか
282デフォルトの名無しさん
2017/12/05(火) 09:18:48.22ID:jRPOQw5f なぁーんだ
283デフォルトの名無しさん
2017/12/05(火) 09:23:34.28ID:LGaiibyR >>260
Adobe readerじゃダメなの?
Adobe readerじゃダメなの?
284デフォルトの名無しさん
2017/12/10(日) 18:15:48.13ID:kwrbJZOe285デフォルトの名無しさん
2017/12/10(日) 21:26:30.38ID:x9bbNSCq cmで始まってdpで終わってるからどこかのレビューページから飛んだURLだと思うんだが
なにもしないとcm_cr_dpなんだけどな
cpが入ってるってことは「この商品を見た後に買っている」を1回表示してるのかもしれない
なにもしないとcm_cr_dpなんだけどな
cpが入ってるってことは「この商品を見た後に買っている」を1回表示してるのかもしれない
286デフォルトの名無しさん
2017/12/10(日) 21:39:59.60ID:J3Wk9KR3 cm_sw_ ... _dp はシェア用URLの生成形式だね
ツイッター用ならcl_twで超わかりやすいんだがr_cp_epはなんだろう
ツイッター用ならcl_twで超わかりやすいんだがr_cp_epはなんだろう
287デフォルトの名無しさん
2017/12/11(月) 06:07:16.82ID:Vu+apVrY288デフォルトの名無しさん
2017/12/11(月) 23:34:54.18ID:5wm6MhH6 lateinit var value: Int
って書いたら'lateinit' modifier is not allowed on properties of primitive typesのエラーになるんですが、
どう書き直したらいいんでしょうか
var value: Int? = null
って書いて、
if (value == null) {
value = initValue()
}
ってするしかないんでしょうか。
って書いたら'lateinit' modifier is not allowed on properties of primitive typesのエラーになるんですが、
どう書き直したらいいんでしょうか
var value: Int? = null
って書いて、
if (value == null) {
value = initValue()
}
ってするしかないんでしょうか。
289デフォルトの名無しさん
2017/12/11(月) 23:52:46.83ID:1muH/1X2 プリミティブ型にlateinitは必要ないからつけられない
290デフォルトの名無しさん
2017/12/11(月) 23:53:52.52ID:jDa4LF1V291デフォルトの名無しさん
2017/12/11(月) 23:55:33.20ID:Q0kTyulb で、一番いい入門書は?
292デフォルトの名無しさん
2017/12/11(月) 23:55:50.41ID:jDa4LF1V293デフォルトの名無しさん
2017/12/11(月) 23:58:47.24ID:jDa4LF1V294デフォルトの名無しさん
2017/12/12(火) 00:03:08.61ID:UCmbxn8n >>292
慌てて修正したらlazy落としていたorz orz
var value by lazy { initValue() }
連投申し訳ない。これで違っていたら目も当てられんが、それもすみません。と誤っておきます。
慌てて修正したらlazy落としていたorz orz
var value by lazy { initValue() }
連投申し訳ない。これで違っていたら目も当てられんが、それもすみません。と誤っておきます。
295デフォルトの名無しさん
2017/12/12(火) 00:09:53.79ID:LMcO3gTk >>289
答えはこれです
答えはこれです
296デフォルトの名無しさん
2017/12/12(火) 00:45:23.57ID:GdvZGdbs297デフォルトの名無しさん
2017/12/12(火) 01:14:31.08ID:YJZ1oHv9298デフォルトの名無しさん
2017/12/12(火) 01:17:20.30ID:yvEMt4M/ ありがとうこの世界の片隅にうちを見つけてくれて
299デフォルトの名無しさん
2017/12/12(火) 04:02:58.46ID:0dOBEVV8 アスペは質疑応答解説に使えねーなーもう
>>288
なぜlateinitを使うかというと「初期値というものがうまく定義できなくてうまく初期化できないから」だ
※実際にはjavaでprimitive typeであるものはnull代入できないからという理屈なのだが知らなくていい
Intとかは0とか-1とかで初期化できるだろ、最初にvarで0や-1入れとけ
Nullableもnullで初期化できるからlateinit使わずにただのvarでnull入れとけ
で、どーしても遅延初期化を使いたいなら
var value: Int by Delegates.notNull<Int>()
とか書くと形式上遅延初期化になる。むろん二度手間だが、遅延初期化という目的は一応達成される
こんなごっついことせずに素直に0とか入れておいたほうがいいんじゃねーかなと思った感覚は正しい。0入れとけ0
あとはちらっと出てたけどby lazyで
val value: Int by lazy { initValue() }
と書くことでも一応達成される。こっちだとvalで書けるので好まれることが多いみたいだね
>>288
なぜlateinitを使うかというと「初期値というものがうまく定義できなくてうまく初期化できないから」だ
※実際にはjavaでprimitive typeであるものはnull代入できないからという理屈なのだが知らなくていい
Intとかは0とか-1とかで初期化できるだろ、最初にvarで0や-1入れとけ
Nullableもnullで初期化できるからlateinit使わずにただのvarでnull入れとけ
で、どーしても遅延初期化を使いたいなら
var value: Int by Delegates.notNull<Int>()
とか書くと形式上遅延初期化になる。むろん二度手間だが、遅延初期化という目的は一応達成される
こんなごっついことせずに素直に0とか入れておいたほうがいいんじゃねーかなと思った感覚は正しい。0入れとけ0
あとはちらっと出てたけどby lazyで
val value: Int by lazy { initValue() }
と書くことでも一応達成される。こっちだとvalで書けるので好まれることが多いみたいだね
300デフォルトの名無しさん
2017/12/12(火) 06:12:22.97ID:GdvZGdbs 長澤太郎の本に書いてあるけど、
lateinit は、DI(Dipendency Injection)か、ユニットテスト時か、
フレームワークが自動的に初期化すると、不都合な場合に使う
lateinit は、DI(Dipendency Injection)か、ユニットテスト時か、
フレームワークが自動的に初期化すると、不都合な場合に使う
301デフォルトの名無しさん
2017/12/13(水) 04:15:38.26ID:v+2UW/cD オワコトリン
302デフォルトの名無しさん
2017/12/13(水) 09:19:22.05ID:XdGkiBLZ 美少女仮面ポワトリン
303デフォルトの名無しさん
2017/12/13(水) 23:27:28.97ID:UM/lzC7r シュシュトリアン
304デフォルトの名無しさん
2017/12/13(水) 23:37:55.76ID:Cx01t7px 技術の話ができないアスペルガーがまた暴れてるのか
305デフォルトの名無しさん
2017/12/14(木) 03:21:54.60ID:fsO62Lbi 正直、ダジャレを理解できるのは都会人だけ。
306デフォルトの名無しさん
2017/12/14(木) 04:38:45.38ID:a/3Oigfw 2017年プログラミング言語アワード候補はCとKotlin
https://news.mynavi.jp/article/20171212-554317/
https://news.mynavi.jp/article/20171212-554317/
307デフォルトの名無しさん
2017/12/14(木) 06:24:48.79ID:Ba6lMueX >>306
でもCの方が有力って書いてあるね。Cは何で増えんたんだろう。
でもCの方が有力って書いてあるね。Cは何で増えんたんだろう。
308デフォルトの名無しさん
2017/12/14(木) 06:50:37.29ID:Zv9+113v309デフォルトの名無しさん
2017/12/14(木) 07:40:22.43ID:v/ZRkoO2 >>308
デフォルト値はコンパイラが定義参照してるだけで、
型にもインスタンスにも持って無いから変数に入れた時点で使えないよ
fun f1(n: Int=1) { print(n) }
val f2 = ::f1
f1() //OK
f2() //コンパイルエラー
デフォルト値はコンパイラが定義参照してるだけで、
型にもインスタンスにも持って無いから変数に入れた時点で使えないよ
fun f1(n: Int=1) { print(n) }
val f2 = ::f1
f1() //OK
f2() //コンパイルエラー
310デフォルトの名無しさん
2017/12/14(木) 07:51:51.32ID:Zv9+113v >>309
理解しました、ありがとう
理解しました、ありがとう
311デフォルトの名無しさん
2017/12/14(木) 08:06:24.80ID:oXimKAa7 Cが必要なレベルの仕事の割合自体は
減ってるはずなのに…謎だ
減ってるはずなのに…謎だ
312デフォルトの名無しさん
2017/12/14(木) 09:49:51.95ID:DkrsR4qN Cでググってもノイズが拾われてくる率が高い
他のCと間違われてるんじゃないのか
他のCと間違われてるんじゃないのか
313デフォルトの名無しさん
2017/12/14(木) 10:12:12.59ID:rSG8ExGM Cの半分はC++という時代があったからな
Cの半分はC#とC++ということでも不思議はない
C sharpならC#確定なのだが
Cの半分はC#とC++ということでも不思議はない
C sharpならC#確定なのだが
314デフォルトの名無しさん
2017/12/14(木) 10:35:46.55ID:LuQDs4YA C++はcocos2dやUnrealでのゲーム開発とかあるけどCはなんだろうな
廃れることはあり得ないけど
廃れることはあり得ないけど
315デフォルトの名無しさん
2017/12/14(木) 11:38:25.42ID:DkrsR4qN 機械学習とかロボティクスとか自動運転とかがメディアで取り上げられるようになって学生にプログラミングへの関心がいっそう高まって教育現場での採用が増えてるのかもしれないな
就職にも有利なスキルだろうし
もともと人気の高い言語だし本格的なプログラミングの登竜門的な立ち位置の言語でもあるし
就職にも有利なスキルだろうし
もともと人気の高い言語だし本格的なプログラミングの登竜門的な立ち位置の言語でもあるし
316デフォルトの名無しさん
2017/12/14(木) 12:12:41.91ID:oEBjPr7B IoTかな
317デフォルトの名無しさん
2017/12/14(木) 21:38:11.42ID:5ZTCzvqn (IoT)
↑
こうすると顔文字になるよね
↑
こうすると顔文字になるよね
318デフォルトの名無しさん
2017/12/14(木) 22:23:38.53ID:55Q0ymnI 検索エンジンで+"C programming" で検索した結果参照してるだけだからな
単にデータとしてうんこオブうんこだ
githubやstackoverflow読んでるIEEEのランキングのほうがなんぼかマシ
単にデータとしてうんこオブうんこだ
githubやstackoverflow読んでるIEEEのランキングのほうがなんぼかマシ
319デフォルトの名無しさん
2017/12/19(火) 10:24:09.99ID:f5KBk+Xr Javaの無名スコープを表す構文が無いことから調べていってみたけど
色々と良く設計されてると感心した
構文が無い代わりにrun関数がある
ラムダ生成コストやブロック内でのreturnが気になったけど
inline関数に渡すラムダはそれごとインライン化されるため
コストも無くreturnはちゃんと呼び出し元関数から抜ける
そうするとinlineでない関数にラムダを渡す場合のreturnとで
区別出来なくて危険かと思ったけど
inlineでないラムダではラベル無しreturnが禁止されていた
returnにラベル必須だと面倒ではと思ったけど
最後のステートメントが戻り値になる仕様だからむしろ楽だった
色々と良く設計されてると感心した
構文が無い代わりにrun関数がある
ラムダ生成コストやブロック内でのreturnが気になったけど
inline関数に渡すラムダはそれごとインライン化されるため
コストも無くreturnはちゃんと呼び出し元関数から抜ける
そうするとinlineでない関数にラムダを渡す場合のreturnとで
区別出来なくて危険かと思ったけど
inlineでないラムダではラベル無しreturnが禁止されていた
returnにラベル必須だと面倒ではと思ったけど
最後のステートメントが戻り値になる仕様だからむしろ楽だった
320デフォルトの名無しさん
2017/12/19(火) 10:25:19.69ID:f5KBk+Xr ■Java
int f(){
{
String a = "a";
if(a.length() < 10){return 1;} // fから抜ける
}
return 2; //ここには来ない
}
■Kotlin
fun f(): Int {
run {
val a = "a"
if(a.length < 10){ return 1 } // runでなくfから抜ける
}
return 2 //ここには来ない
}
int f(){
{
String a = "a";
if(a.length() < 10){return 1;} // fから抜ける
}
return 2; //ここには来ない
}
■Kotlin
fun f(): Int {
run {
val a = "a"
if(a.length < 10){ return 1 } // runでなくfから抜ける
}
return 2 //ここには来ない
}
321デフォルトの名無しさん
2017/12/19(火) 10:28:08.70ID:f5KBk+Xr fun fcall(f1: () -> Int): Int = f1()
fun f(){
val a = fcall {
val a = "a"
if(a.length < 10){ return@fcall 1 } //ラベル付き
else { 2 } //returnキーワード無し
}
}
fun f(){
val a = fcall {
val a = "a"
if(a.length < 10){ return@fcall 1 } //ラベル付き
else { 2 } //returnキーワード無し
}
}
322デフォルトの名無しさん
2017/12/20(水) 02:29:53.61ID:Y+OkZrNr マップの値を条件判定に使いたいんだけど、Nullableをどう扱って良いのかわからない...
val map = mapOf<String,Boolean>("hoge" to false,"fuge" to true,"piyo" to false)
// ↓こんな感じで書きたいが、Nullableなので怒られる
if (map["hoge"]){/*処理*/}
//---------- 解決策 ----------
// @強制的に!!でNotnullにする。でもなんか気持ち悪い。
if (map["hoge"]!!){/*処理*/}
// Aエルビス演算子を使う。しかし、IDEからBの書き方を提案される
if (map["hoge"] ?: false){/*処理*/}
// B凄いバカっぽい。ていうか、これOKで一番上ダメなんだ...
if (map["hoge"] == true){/*処理*/}
なんか、どれもしっくりこない。どうするのが正解なの....
誰か教えて!お願いします!
val map = mapOf<String,Boolean>("hoge" to false,"fuge" to true,"piyo" to false)
// ↓こんな感じで書きたいが、Nullableなので怒られる
if (map["hoge"]){/*処理*/}
//---------- 解決策 ----------
// @強制的に!!でNotnullにする。でもなんか気持ち悪い。
if (map["hoge"]!!){/*処理*/}
// Aエルビス演算子を使う。しかし、IDEからBの書き方を提案される
if (map["hoge"] ?: false){/*処理*/}
// B凄いバカっぽい。ていうか、これOKで一番上ダメなんだ...
if (map["hoge"] == true){/*処理*/}
なんか、どれもしっくりこない。どうするのが正解なの....
誰か教えて!お願いします!
323デフォルトの名無しさん
2017/12/20(水) 03:07:01.09ID:vJEKLhBA if (map.getOrDefault("hoge", false)) { ... } とか。
うーん。なんか変だね。mapOf では nullable かどうか判定しているのに get 時には nullable かどうかの情報が抜け落ちているような。
うーん。なんか変だね。mapOf では nullable かどうか判定しているのに get 時には nullable かどうかの情報が抜け落ちているような。
324デフォルトの名無しさん
2017/12/20(水) 03:12:58.65ID:O14cUYGW >>322
1はmap["hage"]とか存在しないキー指定すると落ちるだろ
2はエルビスで落ちないようになってて
3が落ちないのは、
ここ https://kotlinlang.org/docs/reference/equality.html
Structural equality あたりに書いてある仕組みのせいかな
どうmapを使えばいいのかは知らん
1はmap["hage"]とか存在しないキー指定すると落ちるだろ
2はエルビスで落ちないようになってて
3が落ちないのは、
ここ https://kotlinlang.org/docs/reference/equality.html
Structural equality あたりに書いてある仕組みのせいかな
どうmapを使えばいいのかは知らん
325デフォルトの名無しさん
2017/12/20(水) 03:15:09.91ID:O14cUYGW 知らんが、kotlinみたいな言語だとキーが無いときの処理を適当にごまかすわかにはいかんだろ
326デフォルトの名無しさん
2017/12/20(水) 03:31:33.35ID:nn3v7K50 >強制的に!!でNotnullにする。でもなんか気持ち悪い。
>if (map["hoge"]!!){/*処理*/}
そもそも、map は、そのキーが存在しない場合もあるのが、当たり前だろ。
そのキーが存在するかどうかを、チェックするメソッドもある
君が仕様・設計を考えるんだ。
1. そのキーが存在した場合の処理と、
2. 存在しなかった場合の処理
初心者は、強制変換の使い方をわかっていないのだから、!! を使うな
>if (map["hoge"]!!){/*処理*/}
そもそも、map は、そのキーが存在しない場合もあるのが、当たり前だろ。
そのキーが存在するかどうかを、チェックするメソッドもある
君が仕様・設計を考えるんだ。
1. そのキーが存在した場合の処理と、
2. 存在しなかった場合の処理
初心者は、強制変換の使い方をわかっていないのだから、!! を使うな
327デフォルトの名無しさん
2017/12/20(水) 03:56:24.26ID:MahKH8pr >>325
+1
「知らないキーでmapに問い合わせたときの結果はnullになることがある」問題をコード的になんとかする必要がどうしてもある
これは本当にどうしようもないので、どっかでKotlin(実際にはIDE)に知らせる面倒を許容するしかない
ポイントとしては面倒でも一旦変数にぶち込むこと。これですべてうまくいく
// checkNotNullの書き方だけ覚えればいいので最近全部これで書いてる
val mapValue: Boolean = checkNotNull(map["hoge"]){ "map does not have key:<hoge>" }
if (mapValue) { doSomething() }
// またletをそんな用途に使って
map["hoge"]?.let{ doSomething() }
// 考え方がJavaっぽい(偏見)変数に入れないとnullチェックした履歴保持できないよ
val mapValue = map["hoge"]
if (mapValue!= null && mapValue) { doSomething() }
// ほら、Kotlinの人はなんでもかんでもwhenで書きたがるから
when(map["hoge"]){
null -> println("ぬるぽ") // なくても動く
true -> doSomethingTrue()
false -> doSomethingFalse()
}
+1
「知らないキーでmapに問い合わせたときの結果はnullになることがある」問題をコード的になんとかする必要がどうしてもある
これは本当にどうしようもないので、どっかでKotlin(実際にはIDE)に知らせる面倒を許容するしかない
ポイントとしては面倒でも一旦変数にぶち込むこと。これですべてうまくいく
// checkNotNullの書き方だけ覚えればいいので最近全部これで書いてる
val mapValue: Boolean = checkNotNull(map["hoge"]){ "map does not have key:<hoge>" }
if (mapValue) { doSomething() }
// またletをそんな用途に使って
map["hoge"]?.let{ doSomething() }
// 考え方がJavaっぽい(偏見)変数に入れないとnullチェックした履歴保持できないよ
val mapValue = map["hoge"]
if (mapValue!= null && mapValue) { doSomething() }
// ほら、Kotlinの人はなんでもかんでもwhenで書きたがるから
when(map["hoge"]){
null -> println("ぬるぽ") // なくても動く
true -> doSomethingTrue()
false -> doSomethingFalse()
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 安倍晋三「これも、技術のうち!」⇐教えてくれそうなテクニック [731544683]
- 【悲報】ネトウヨゆたぼん、事故の見舞金を乞食したついでに今でもパパの自作自演操り人形なことがバレ終わるwwwwwwwwwww [802034645]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 【画像】ひとり旅行で4人部屋WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 俺はきっと"全部"嫌いなんだ。息づく全てが俺を苛つかせるんだ。
