X



Kotlin 5
■ このスレッドは過去ログ倉庫に格納されています
0327デフォルトの名無しさん
垢版 |
2019/02/19(火) 09:12:17.39ID:D8b3v+Fo
>>326
最強のSEO力でそう見せてるだけだぞ
それでもDartに対するヘイトは抑えきれなかったようだが
0328デフォルトの名無しさん
垢版 |
2019/02/19(火) 09:33:24.18ID:cAOiK8uf
>>327
直接Go開発周りのディスカッションを見てきての感想だから、SEOも何も関係ねーよ
英語が読めるなら自分の目で確かめることをお勧めする
あれはある意味理想的なOSS開発の形かもしれない
0333デフォルトの名無しさん
垢版 |
2019/02/20(水) 15:54:05.41ID:agArr1lp
ダー子
0336デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:05:59.81ID:v7iPz90J
夢は見るもの
目標は叶えるもの
0340デフォルトの名無しさん
垢版 |
2019/02/23(土) 12:08:36.03ID:9pS68leH
Котлин
0341デフォルトの名無しさん
垢版 |
2019/02/24(日) 12:59:23.23ID:pmK9w2Lp
ランキング画面を作っていてRecyclerViewの項目のソートをしたいんですが、
Cellectionをお気に入り数の降順でソートした上で、
タイトルとサブタイトルの昇順にソートするにはどうしたらいいですか
以下でお気に入り数の降順でソートするところまではできたんですが。
RankingDatas.sortedByDescending { it.bookMarkCount }
0343デフォルトの名無しさん
垢版 |
2019/02/24(日) 17:28:12.24ID:pmK9w2Lp
APIレスポンスはそうして返してるんですが、
ローカルでお気に入りオンオフしてランキング順位が変わった場合に
再度APIを叩いてデータを取り直すのも微妙なので
その場合はローカルでソートして
順番を入れ替えたいという感じです
0344デフォルトの名無しさん
垢版 |
2019/02/24(日) 18:25:01.14ID:nlMNXQkf
ドキュメントにこう書いてあるからascendingとdescendingを順次呼び出せばいいんじゃない?
The sort is stable. It means that equal elements preserve their order relative to each other after sorting.
呼び出す順序はソート優先順位の逆順で
0345デフォルトの名無しさん
垢版 |
2019/02/24(日) 20:05:27.33ID:pmK9w2Lp
rankingDatas.sortedByDescending { it.bookMarkCount }.sortedBy { it.title }.sortedBy { it.subTitle }

やってみましたが、途中の結果は捨てられて単に subTitle の降順になるようです
0352デフォルトの名無しさん
垢版 |
2019/02/26(火) 06:27:00.41ID:oQJIDyJZ
久しぶりに触ったらcoroutineがだいぶ変わってるらしくて以前からとりあえず動くけどよく分かってない状態だったのにもう全然分からないよ……(´・ω・`)
0355デフォルトの名無しさん
垢版 |
2019/02/26(火) 09:55:03.32ID:E0EMtjG2
え?子ルーチンそんなに変わったの?
0357デフォルトの名無しさん
垢版 |
2019/02/26(火) 12:06:54.02ID:5MxkS3P7
>>351
のリンク先で、数値なら、- で降順にできるのか?

list.sortedWith(compareBy({ -it.age }, { it.name }, { it.address }))

Ruby なら、
arr2 = arr.sort_by { |a| [ -a[:score], a[:room] ] }
0358デフォルトの名無しさん
垢版 |
2019/02/26(火) 18:17:15.84ID:k06atLuF
>>357
できる。
0359デフォルトの名無しさん
垢版 |
2019/02/28(木) 03:26:51.88ID:oRFlldUh
ま、しかし、複数項目で昇順降順が混在する場合は自分で Comparator 作っちゃった方が楽かもね。
0360デフォルトの名無しさん
垢版 |
2019/02/28(木) 07:06:25.14ID:Lh1ejLNL
いやいや rankingDatas.sortedBy { it.subTitle }.sortedBy { it.title }.sortedByDescending { it.bookMarkCount } でいいじゃん
0363デフォルトの名無しさん
垢版 |
2019/02/28(木) 10:37:24.91ID:o8LdAn98
>>362
10万件ソートするなら使えないし、1000件しかソートしないなら問題ない
ランキングならたいした件数ないんじゃない
0364デフォルトの名無しさん
垢版 |
2019/02/28(木) 13:05:23.62ID:oAFMMcaR
>>360
それって2番目の並べ替えで1番目の並べ替えの順序が変わらないことは保証されてるの?
0366デフォルトの名無しさん
垢版 |
2019/02/28(木) 15:53:56.89ID:sPMvbV7g
mutableLivedataを外部に公開したら良くないってことで
別途livedataを作ってそいつに参照を持たせて
外部にはlivedataだけ公開するっていうのを
全部のmutableLivedataに対して行うの面倒臭いんですが
なにかいい方法ないですか
0367デフォルトの名無しさん
垢版 |
2019/02/28(木) 19:05:52.26ID:TwQuwGRl
よく知らないけどmutableLivedataをコンストラクタで貰って
それを元にlivedataを作って両方保持するクラスでも作って包めばいいんじゃないの
0368デフォルトの名無しさん
垢版 |
2019/03/01(金) 01:02:08.44ID:8x0yRf06
それで何か解決するんですかね
結局view側からmutableLivedataに
アクセスできるんじゃないですかね
0369デフォルトの名無しさん
垢版 |
2019/03/01(金) 06:35:34.41ID:eJTnddJA
本当にやり方が思いつかないならもうちょっと経験値の高い先輩なりに相談してみよう
0371デフォルトの名無しさん
垢版 |
2019/03/01(金) 09:24:26.88ID:ajbNVKsu
動かしてないけどこんな感じ

import android.arch.lifecycle.*
import kotlin.reflect.KProperty

//保持用
fun <T> unmodifiableLiveData(d:LiveData<T>): LiveData<T> = Transformations.map(d){it}
class MutLiveWrap<T>(val lv:MutableLiveData<T>) {
val readonlyLv = unmodifiableLiveData(lv)
operator fun getValue(thisRef: Any?, property: KProperty<*>) = readonlyLv
}
val <T> MutableLiveData<T>.wrap get() = MutLiveWrap<T>(this)


//使用
class Test {
private val aWr = MutableLiveData<Int>().wrap
val a by aWr

fun f(){
val mutLv: MutableLiveData<Int> = this.aWr.lv
val roLv : LiveData<Int> = this.a
}
}
0372デフォルトの名無しさん
垢版 |
2019/03/01(金) 11:13:31.72ID:PhmT31GH
>>370
分かりません。
0374デフォルトの名無しさん
垢版 |
2019/03/01(金) 12:41:01.41ID:yZJ4Zkhu
荒らしに返事するな!

そいつは前からいる、荒らしだろ。
相手をすると、この板に居つくだけ!
0375デフォルトの名無しさん
垢版 |
2019/03/01(金) 12:57:49.73ID:PhmT31GH
ま、しかし、このスレの場合は日頃は過疎ってるのでたまに荒しが来てくれた方がスレが活性化して落ちる心配がなくなるなw
0376デフォルトの名無しさん
垢版 |
2019/03/01(金) 16:06:36.33ID:XD1TRf4c
developer.android.comの最近のページはコードサンプルがKotlinとJava両方載ってるんだね
タブで切り替えるんだけど最初に表示されてるのはKotlin
0377デフォルトの名無しさん
垢版 |
2019/03/01(金) 16:54:26.44ID:ae30enpy
俺も動かしてないけどつくってみた

import androidx.annotation.MainThread
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer

private class ReadOnlyLiveData<T>(private val liveData: LiveData<T>) : LiveData<T>() {
override fun setValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
override fun postValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
@MainThread override fun observe(owner: LifecycleOwner, observer: Observer<in T>) { liveData.observe(owner, observer) }

@MainThread override fun observeForever(observer: Observer<in T>) { liveData.observeForever(observer) }

@MainThread override fun removeObserver(observer: Observer<in T>) { liveData.removeObserver(observer) }

@MainThread override fun removeObservers(owner: LifecycleOwner) { liveData.removeObservers(owner) }

override fun getValue(): T? = liveData.value

@SuppressWarnings("WeakerAccess") override fun hasObservers(): Boolean = liveData.hasObservers()

@SuppressWarnings("WeakerAccess") override fun hasActiveObservers(): Boolean = liveData.hasActiveObservers()
}

fun <T> LiveData<T>.readOnly(): LiveData<T> {
if (this is ReadOnlyLiveData<T>) return this // もうすでにリードオンリー
return ReadOnlyLiveData(this)
}
0378デフォルトの名無しさん
垢版 |
2019/03/02(土) 06:14:14.54ID:qFBH5IQH
>>357
降順と昇順が混在する場合は compareBy または compareByDescending で Comparator 作って
それに対して thenBy または thenByDescending で追加させて行く方が楽だし速いと思う。
0379デフォルトの名無しさん
垢版 |
2019/03/04(月) 16:04:14.52ID:/4qbaGVQ
AnkoでBottom Sheetって使えますか?
0381デフォルトの名無しさん
垢版 |
2019/03/08(金) 10:46:41.80ID:pv8HlopZ
君が面白くなりなさい。
0385デフォルトの名無しさん
垢版 |
2019/03/10(日) 13:42:04.30ID:56gRJqyl
>>384
SequenceはIterableとほぼ同じ
違いは
 Sequence: 遅延評価する (なのでジェネレーターも含む)
 Iterable:  基本的には遅延評価でない (通常、実体はコレクション)

拡張関数も別れていて、例えば
 Sequenceのmap は遅延評価するSequenceを返す
 Iterableのmap はその場で全要素を処理してListを返す
0388デフォルトの名無しさん
垢版 |
2019/03/11(月) 17:24:32.47ID:2ppgAkG/
げ、知らなかった。
ずっとIterableがStreamの代わりだとばかり。
PythonのSequenceと混同してた。
ならば、Iterableをあそこまでゴージャスにする必要があったのか?
0390デフォルトの名無しさん
垢版 |
2019/03/11(月) 18:35:48.60ID:oxE6wZ/Z
>>388
典型的なコレクション操作では遅延評価せずその場で全処理する方が早いため

意味付けが違うだけで、SequenceとIterableは同じ拡張関数を持ってるくらいの認識でOK

分かりやすさのため、あえて使い分けを用意しなかった
Javaの割り切り方もありだとは思うけどね
0391デフォルトの名無しさん
垢版 |
2019/03/11(月) 21:05:48.78ID:MDT71nit
SequenceはJava8のStreamと類似で、KotlinであえてStreamを使うべき機会はほとんどないからSequenceを使っておけば良いってことかな
0393デフォルトの名無しさん
垢版 |
2019/03/12(火) 01:11:15.05ID:WllyGH1o
partitionのSequence版が無くて自作したわ

groupingByも遅延評価だけど使い方がむずい(毎回リファレンス読み直す)
0394デフォルトの名無しさん
垢版 |
2019/03/12(火) 08:13:05.73ID:z/76z4zm
>>391
pararellがないな。
はっきり並列化できる処理なら、Streamの方がJavaの言い回しを考慮した上でも直感的にかける。
0397デフォルトの名無しさん
垢版 |
2019/03/12(火) 15:14:48.22ID:iD2RJper
>>396
このレスは板内爆撃
本人かシンパかアンチか荒らしかいまいち判別できないので放置でよいよ
0401デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:06:54.74ID:ksQagb59
俺が Kotlin 押しビデオ作って公開すればいいのか?

しかし Kotlin 初心者なので「いいですよ〜。最高ですよ〜」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。
0402デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:14:10.50ID:YxxaJZky
>>401
ジャップに布教するなら、みんな使ってますよ〜乗り遅れますよ〜仲間外れですよ〜だけでいいよ
初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう?
0403デフォルトの名無しさん
垢版 |
2019/03/16(土) 16:20:48.33ID:28C0KCt9
まぁでも、kotlin go あたりが推奨されるのはわかるけどな
今更phpとかおすよりかは説得力ある
0404デフォルトの名無しさん
垢版 |
2019/03/16(土) 17:20:10.49ID:ksQagb59
>>402
ああ。そうだな。
後は学生向けにこれさえできれば楽々就職みたいに言うと。
0405デフォルトの名無しさん
垢版 |
2019/03/16(土) 17:27:02.08ID:ksQagb59
やっぱこれも必要だろうな。
https://imgur.com/b5zh9pa
0407デフォルトの名無しさん
垢版 |
2019/03/17(日) 18:08:41.49ID:fOPvRjrc
PreferenceFragmentが非推奨になる

代わりにandroidx.preference liblary使えって言われる

日本語のガイドに説明なし

適当すぎんだろイライラ
0408デフォルトの名無しさん
垢版 |
2019/03/17(日) 21:15:53.12ID:t+AGMGYK
あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様?
0411デフォルトの名無しさん
垢版 |
2019/03/18(月) 19:24:24.40ID:6b7FslP4
まぁAndroidの公式リファレンスは言語切替をシステム化してるから
ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う

iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から
中途半端に惑わされることは無い
0412デフォルトの名無しさん
垢版 |
2019/03/18(月) 20:47:50.90ID:1gtRswz3
いつの間にかこんな入門書出てたよ。既にKindle版もある。

Kotlinプログラミング
https://www.amazon.co.jp/dp/B07M8LKSKV
0413デフォルトの名無しさん
垢版 |
2019/03/19(火) 03:22:14.95ID:j5JxWPYN
もっと可愛い名前にすれば良かったのに
swiftみたいな
0416デフォルトの名無しさん
垢版 |
2019/03/19(火) 10:51:32.88ID:STa9vfc0
>>415
ページ一番下に言語切替がある
リファレンスページでは正常に切り替わらないことがあるからトップページで切り換えた方がいい
https://developer.android.com/

もしくはURLに言語を英語にする「?hl=en」を付ける
https://developer.android.com/guide/topics/ui/settings.html?hl=en

日本語の方はAndroidXの記述が無いな
https://developer.android.com/guide/topics/ui/settings.html?hl=ja
0417デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:07:55.88ID:t/u/FScK
Androidは公式で日本語ドキュメントあるのか
Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな
0418デフォルトの名無しさん
垢版 |
2019/03/19(火) 12:30:24.38ID:BI7+7Q7/
君がやってくれ。たのんだぞ。
0422デフォルトの名無しさん
垢版 |
2019/03/19(火) 17:54:02.89ID:qahjbQKM
kotlin native応援してるんだけど何が一番貢献になるんやろか?
翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。
やっぱ募金とかなんか?
0424デフォルトの名無しさん
垢版 |
2019/03/19(火) 18:12:21.52ID:STa9vfc0
>>422
とりあえず公式リポジトリのスターとfork数増やして
kotlin nativeであることをアピールしたライブラリ作ればいいのでは

ただ、現時点ではパフォーマンスが残念だからお勧めしない
出来ることが違うとはいえ、ロジック部分は
JVMどころかKotlin/JS経由のnodeで動かすのより7〜10倍くらい遅い

まだコンパイラの最適化をやってないのは救いだけど
俺はARC with cycle collectorがスループット下げてる可能性を気にしてる
もしそうなら最適化やっても思うほど改善しないんじゃないかと
0425デフォルトの名無しさん
垢版 |
2019/03/20(水) 08:09:47.58ID:vnEhpOgU
JSとかnativeとかどうでもええ。
いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。
■ このスレッドは過去ログ倉庫に格納されています

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