X



Kotlin 5

■ このスレッドは過去ログ倉庫に格納されています
0693デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:25:52.36ID:zeev4Evh
Ruby では、クラスに、each メソッドが定義されていれば、
include Enumerable で、map, each_line などの便利な機能を使える(Mix-in)

Enumerableのラッパーが、Enumerator で、
eachを定義していないクラス、例えば、String クラスに、Enumerable の機能を追加する

Enumerableは内部イテレータで、Enumeratorは外部イテレータ。
外部イテレータは、繰り返しの進行を制御できる

enum = "a\nb".to_enum( :each_line ) # Enumerator
enum.with_index do | line, idx | # 1行ずつ処理する
p [ idx, line ]
end

出力
[0, "a\n"]
[1, "b"]

with_index は、Enumeratorクラスのメソッドで、
map に、インデックスを渡すことも出来る

p enum.with_index.map { | line, idx | "#{ idx } : #{ line.swapcase }" }
#=> ["0 : A\n", "1 : B"]
0694デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:36:39.21ID:eEvxk7yL
>>691
あー。そうか。

まあ Iterable は中に Iterator 返すやつ一つ作ってしまえば良いだけなので object で作ってそのまま forEachOndexed で使えば良いだけなのだがなんというか面倒。

あ、自分でそういう拡張関数作ればいいだけか。てか作っておいて欲しかっな。
0695デフォルトの名無しさん
垢版 |
2019/05/14(火) 12:45:32.34ID:BT1Jap6O
>>689
イテレーターは列挙するものだからインデックスと直結しないのでは
n件のリストがあったとして、それをイテラブルとして回すときのインデックスはほぼ自明だけど
そいつを3から始めるイテレーターや逆順のイテレーター
3歩進んで2歩下がるイテレーターのインデックスというのは
ルールを決めてしまえばいいんだけど本質的な属性ではないと思う
0696デフォルトの名無しさん
垢版 |
2019/05/14(火) 13:05:37.50ID:4HZJg8yK
拡張関数ってグローバルだよな
どこに書けばいいか迷ったあげく使うクラスと同じファイルに書いてしまう
0698デフォルトの名無しさん
垢版 |
2019/05/14(火) 17:29:04.99ID:IaXs534s
拡張関数の定義を interface の中にすれば、使用可能範囲をコントロールできる
0701デフォルトの名無しさん
垢版 |
2019/05/15(水) 12:44:33.69ID:laKGlnoI
どのみち、IDEがないと読み難い言語だから、Extensionはさして気にならない。
プロパティアクセスのせいで、知らず知らずにシャドウしてしまう方がずっと気になる。
0703デフォルトの名無しさん
垢版 |
2019/05/16(木) 19:36:52.04ID:9YitK9mS
>>699
Android以外はちゃんと動くんかな・・・・?
0705デフォルトの名無しさん
垢版 |
2019/05/18(土) 09:09:23.16ID:cPFyVnxJ
>>699
興味あるわこれ
今やってるの終わったら使ってみようと思うんだけど誰か試してみた?
0706デフォルトの名無しさん
垢版 |
2019/05/18(土) 12:51:09.41ID:JYN3Apin
社内の持ち回りの勉強会で、vimでKotlin開発する環境を気合いで整える、という発表をしたら大受けしたわ
もちろんネタとしてな。絶対idea使った方がいいぞ。
0708デフォルトの名無しさん
垢版 |
2019/05/18(土) 16:19:18.33ID:IkSg3I69
やらないと後で「おまえやるって言ったよな」と責められるw
0709デフォルトの名無しさん
垢版 |
2019/05/18(土) 22:59:21.42ID:rrFT3N/c
kotlinでandroid開発の記事載ってる雑誌ないですか
ネットや書籍から情報得るしかない?
0711デフォルトの名無しさん
垢版 |
2019/05/19(日) 05:37:35.31ID:+tXYNnhs
なぜ雑誌?本ならあるのだが。
0712デフォルトの名無しさん
垢版 |
2019/05/19(日) 16:40:35.01ID:+tXYNnhs
そもそも今ではプログラミングについての雑誌が少ないよね。
Software Design か日経ソフトウェアぐらいなんじゃないか?
ハードウェア寄りな Interface みたいなのもあるが。
0717デフォルトの名無しさん
垢版 |
2019/05/20(月) 00:21:44.28ID:pT4TPZWt
断片的なのはネットで調べればいいが、
体系的に全体をまんべんなく知りたいってときは、
やっぱり書籍が適してると思う。
0718デフォルトの名無しさん
垢版 |
2019/05/20(月) 06:11:32.77ID:BYsItzt6
書籍もガッツリ読むなら紙の本がいいし、写経するなら電子書籍の方がいいし
選択肢が増えた分だけむしろ選ぶのが大変になってるな
0719デフォルトの名無しさん
垢版 |
2019/05/20(月) 11:03:48.81ID:+QyKHsoF
SoftwareDesignは最近はもう読んでない
バックナンバーも大量に棄てた
川上さんの連載のだけ残してる
0720デフォルトの名無しさん
垢版 |
2019/05/20(月) 11:35:05.49ID:MLZoEYDf
雑誌のいいとこは判型が大きいことだなw
ただのブログよりは読者層を意識してる率が高くて、Web記事よりはまとまりと終わりがある可能性が高いという感じか
なにの情報を欲しいと思ってるのかに依存する気がするぞ
0722デフォルトの名無しさん
垢版 |
2019/05/20(月) 15:22:51.14ID:poyp5Kqc
日経ソフトウェアは、素人向け

SoftwareDesign ぐらいか。
WEB+DB は、システム環境・プログラマーが半々ぐらい

他は、日経Linux は、ラズパイが多い

フレームワークの巨匠と言えば、掌田津耶乃・山田祥寛

山田の講習会は、数万円とか。
掌田なら、十万円ぐらい行きそうw
0724デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:22:34.07ID:Nm/yOzhN
最近の日経ソフトウェアはPython雑誌みたいになってる
Kotlinの記事なんて全く載らない
0725デフォルトの名無しさん
垢版 |
2019/05/20(月) 20:48:41.91ID:oKvxv21R
そういやPython大ブームだね。
機械学習関係で火が着いた感じか。
0731デフォルトの名無しさん
垢版 |
2019/05/21(火) 08:31:57.13ID:qls//8Wz
おすすめかどうかを意識しろ
あるかどうかではなく、おすすめかどうかだ
検索すりゃこのご時世英語含めてたくさん出てくる
そんなの見りゃわかる
おすすめできるものかどうかがいちばん大事
0733デフォルトの名無しさん
垢版 |
2019/05/21(火) 10:10:30.25ID:YlTjoOUk
>>723
NGに入れろ
スッキリ

0734デフォルトの名無しさん
垢版 |
2019/05/21(火) 10:56:17.04ID:KjOgf3b2
kotlin使った事無くて勉強中なんですが
null安全は通信で届いたオブジェクトについてどう働きますか?
あるいはデシリアライズされたオブジェクトについて
そこでもnull安全ですか?
0735デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:04:08.23ID:x7pfOsc7
当然どんなオブジェクトであれKotlinで書かれている限りnull安全は機能するけど、君はそもそもnull安全を誤解してそうな予感がする
0736デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:11:41.76ID:KjOgf3b2
検索すると、null不可な変数にnullを代入できないこと、とあります。
そうすると通信で受信したオブジェクト等はどうなるのかなと。
この理解は間違っていますか?
0737デフォルトの名無しさん
垢版 |
2019/05/21(火) 11:39:29.09ID:c7g0QxSl
どこまで「使ったことない」かにもよるんだが
・nullかどうかの条件分岐をクリアした変数
・nullかどうかの条件分岐をまだやってない変数
の2つがあるだけだと思っていい

外部から取得したデータがあったとして、nullチェックをまだしていないならnullableだ
どこかで誰かが(静的文法解析上)nullではないという条件分岐を通したあとならそれはnonnull
どこかで誰かがその後にnullになるかもしれない処理を通したらnullableに戻る
0738デフォルトの名無しさん
垢版 |
2019/05/21(火) 12:29:35.90ID:ZAINLMmO
>>736
文字列とか通信データから、新たなオブジェクトを構築するのでしょ?

構築できたら、null ではないし、
データがおかしくて構築できなかったら、エラー!
0740デフォルトの名無しさん
垢版 |
2019/05/21(火) 13:55:21.57ID:2xcSjans
>>736
nullを入れられない型なのにnullを入れようとしたらその時点でオブジェクトを生成できずにエラー
なので、json文字列を受け取ってオブジェクトを生成する部分で要件に合わせて適宜いい感じに処理する必要がある
0741デフォルトの名無しさん
垢版 |
2019/05/21(火) 14:53:46.84ID:BVi2WQ22
>>736
試してみればわかると思うが、nillableな型にnull入れてObjectOutputStreamで書いた後でnullableでなくしてコンパイルしなおしてからObjectInputStreamで読もうとするとInvalidClassExceptionが出る。
0743デフォルトの名無しさん
垢版 |
2019/05/21(火) 16:06:22.73ID:BVi2WQ22
図解しないとダメか?w
0744デフォルトの名無しさん
垢版 |
2019/05/21(火) 17:40:26.31ID:x7pfOsc7
そもそも聞かれてることに対する回答としてはピントがズレてる
自分の知識自慢したいイキリオタク感がすごい
0745デフォルトの名無しさん
垢版 |
2019/05/21(火) 18:43:35.05ID:gj4VcULk
>>734がおそらくしているであろう幻想を抱いていた時期が自分にもありました
とエスパーしながらいうと、通信で受信したオブジェクト等はnullableな型を持つことになるだけで、
Kotlinにしたからといってnullチェックが要らなくなるわけではない。

>>736には誰の説明が分かりやすかっただろうか。
0746デフォルトの名無しさん
垢版 |
2019/05/21(火) 20:08:28.33ID:BVi2WQ22
>>744
ずれてないだろ。通信でオブジェクト送る話なんだから。
0747デフォルトの名無しさん
垢版 |
2019/05/21(火) 20:11:45.34ID:grT0tw0/
Javaのコードを呼び出すところは、全部そうだね。
Kotlinはnullableであることを「強制しない」。
AndroidとかjavaxのAnnotationでもついていない限り。
0749デフォルトの名無しさん
垢版 |
2019/05/21(火) 21:17:46.88ID:KjOgf3b2
null安全は@NotNullとどう違いますか?
0751デフォルトの名無しさん
垢版 |
2019/05/21(火) 23:15:32.28ID:dJ+4PuSm
null安全は以下の機能を包括する言葉
 ・型システムでnull許容とnull不可を区別出来る
 ・null許容型の取扱いを容易にするモナド操作などを言語仕様や標準ライブラリに持つ
0752デフォルトの名無しさん
垢版 |
2019/05/22(水) 00:26:45.64ID:s0RuNCYO
  ∧_∧  / ̄ ̄
 ( ´∀`)<  ド?
 (     )  \__
 │ │ │
 (__)___)
0754デフォルトの名無しさん
垢版 |
2019/05/22(水) 15:26:22.63ID:06P4CJxl
いけるいける
0759デフォルトの名無しさん
垢版 |
2019/05/23(木) 00:10:33.20ID:K2oq56d+
>>754,755,758
iOSアプリを実際に作った人がこの板にこんなにいるとは思えないんだがw
いや、自分もないんだけどさw
0761デフォルトの名無しさん
垢版 |
2019/05/23(木) 01:52:40.87ID:kvy164Qh
英語で書かれた問題を解読するだけで2時間半が経過してしまいそうな予感
0763デフォルトの名無しさん
垢版 |
2019/05/23(木) 06:58:10.23ID:ZvIUMcmJ
>>759
大丈夫、Kotlinも業務で使ってるしiOSアプリも業務でいくつも作ってるからさ
Kotlin nativeのiOSアプリも実際に作ってみたって人と勉強会の懇親会で話したことがある
0766デフォルトの名無しさん
垢版 |
2019/05/24(金) 15:11:48.77ID:10iCK04b
>>765
全く違うもの出されてどちらがと聞かれても・・・
0769デフォルトの名無しさん
垢版 |
2019/05/24(金) 16:59:34.27ID:cg0Vnpe0
どちらにせよその2つは作られる型が違う
nullableにする必要があるかどうかで使い分けろとしか
0773デフォルトの名無しさん
垢版 |
2019/05/24(金) 17:52:50.04ID:8qiM3xuo
val にして空の MutableList 作るのは?
0777デフォルトの名無しさん
垢版 |
2019/05/24(金) 18:51:13.35ID:xfff2+MO
>>772
Kotlinにおいてはvarもnullableもごく限られた場面でしか使わない例外的なものだということは知っておいた方が良い。
nullableは無駄に取り扱いが面倒だったり、varは予期せぬバグを生み出す温床になり得るから。

なので
val list = mutableListof<Unko>()

が、大抵の場面で正解。
0781デフォルトの名無しさん
垢版 |
2019/05/24(金) 20:17:54.95ID:73sdMVIH
盲目的も何もコンテキストが分からないんだから一般論としてvarを使うよりはMutableListを使う方が適してると言うしかないだろ
どんな状況でも何がなんでもMutableListを使えなんて誰も言ってない
0783デフォルトの名無しさん
垢版 |
2019/05/25(土) 05:49:19.79ID:wB1WneOU
>>768
状況にもよるけど、>>782で出たlateinitか、場所によっては
val list by lazy{ [List<Hoge>を返す式] }
そもそも、listの要素が出揃っていない段階でlistを宣言するのが適切でない可能性も。
val list = [List<Hoge>を返す式]
のようにいきなり最後まで計算するか、少々面倒だけど>>773の言うように一旦
val temporaryList = mutableListOf<Hoge>()
して要素が出揃ったら
val list = temporaryList.toList()
するとか。
0787768
垢版 |
2019/05/25(土) 10:50:32.51ID:VlF1HZqT
>>783
それだとvalじゃなくてvarじゃね?

始めに空のList入れる意見が多いけど結局使う時にemptyかチェックするでしょ
nullかどうかチェックするのと同じじゃね?
0788デフォルトの名無しさん
垢版 |
2019/05/25(土) 10:57:44.94ID:VlF1HZqT
nullの警告が厳しいからこそ使うのはどうだろうか
nullならnullだと知らされるがemptyじゃ何の警告も出ない
0789デフォルトの名無しさん
垢版 |
2019/05/25(土) 13:16:02.71ID:exhgzloH
・リスト自体を構築するケース
  ・listを使わないケースがかなりある and 非常に効率重視(※)なら
     var list: List<Hoge>? = null
     必要になったら list = mutableListOf()
  ・そうでないなら
     val list = mutableListOf<Hoge>()

  ※mutableListOf(=ArrayListの生成コスト)すら許容出来ない場合
    なおmutableListOfと比較するとlazyの準備処理の方がコストが掛かる

・場合によって構築済みリストを入れ替える(再代入)するケース
  var list = listOf<Hoge>()

補足: listOf()はemptyListにinline展開されEmptyListのシングルトンを返すので生成コストは無い
>>765 >>772は再代入目的のようなのでlistOfで良い
0790デフォルトの名無しさん
垢版 |
2019/05/25(土) 13:19:44.44ID:F8alA812
>>787
そうとは限らない
単にリストの要素数が0ならそれでいいケースも多い
そう考えると明らかに初期化を忘れてるのが分かるという意味でnullを入れておくのもいいかもしれない
0791デフォルトの名無しさん
垢版 |
2019/05/25(土) 17:48:30.03ID:AAsiXMmO
Androidなどで、非同期処理が関わってくると、
valは注意して使わないといけない場面が、意外にたくさんあることに気が付く。
■ このスレッドは過去ログ倉庫に格納されています

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