X



Kotlin 2
■ このスレッドは過去ログ倉庫に格納されています
0337デフォルトの名無しさん
垢版 |
2017/12/20(水) 15:20:49.03ID:g9yiCifS
>>335
not false が true でない?
じゃあなに?
0339デフォルトの名無しさん
垢版 |
2017/12/20(水) 16:17:54.73ID:f5FKKl5l
>>337
>>333>>335のコードが示すように
Nullable(null)もStringも真偽値ではないため
falseとtrueどちらにも等値でない

falseでない真偽値はtrueだが
falseでない値はtrueとは限らない

「True, null」だから違和感が有って
「not false, null」なら無かったのでは
0340デフォルトの名無しさん
垢版 |
2017/12/20(水) 16:28:57.34ID:f5FKKl5l
>>333
リンク先のコード消えてるよ

同じ接続元・同じURLで開くと変更モードになるようだから
「新規コード」を押してから扱わないといけない
0346デフォルトの名無しさん
垢版 |
2017/12/25(月) 09:22:20.35ID:pKfklu/G
    \   ∩─ー、    ====
      \/ ● 、_ `ヽ   ======
      / \( ●  ● |つ
      |   X_入__ノ   ミ   そんな餌で俺様が釣られクマ――
       、 (_/   ノ /⌒l
       /\___ノ゙_/  /  =====
       〈         __ノ  ====
       \ \_    \
        \___)     \   ======   (´⌒
           \   ___ \__  (´⌒;;(´⌒;;
             \___)___)(´;;⌒  (´⌒;;  ズザザザ
0348デフォルトの名無しさん
垢版 |
2017/12/28(木) 18:16:09.77ID:xKYb+xvk
>>278の本は何故か新品よりも高い中古がもう出ているw
(値段のタイプミスか?)
0349デフォルトの名無しさん
垢版 |
2017/12/28(木) 20:08:10.60ID:g7xH4Ri4
購入者の確認不足や品切れ時にたまたま買われることを狙った有名な詐欺だよ
0350デフォルトの名無しさん
垢版 |
2017/12/29(金) 01:04:43.78ID:05sEmydS
>>347
確かに可愛いがムネ大き過ぎ。
D,EかせめてFカップなら信者になってた。
0352デフォルトの名無しさん
垢版 |
2018/01/10(水) 07:01:15.70ID:IyW1fpec
classのdelegateってinterfaceしか出来ないみたいだけど、
classやabstractのインスタンスでdelegateできない理由をご存知の方いらっしゃいますでしょうか。

可: class SubClass(instance: Interface) : Interface by instance
不可: class SubClass(instance: SuperClass) : SuperClass by instance
0353デフォルトの名無しさん
垢版 |
2018/01/10(水) 07:32:55.52ID:IyW1fpec
もちろんSuperClassはopen指定してあります。
>>352 に答えられる人にそんな野暮なこと言う方はいないと思いますが念のため。

In Actionには「インターフェースを実装しいているなら〜」とさらっと書いていて
クラスでdelegateできない理由は触れられていませんでした。
0355デフォルトの名無しさん
垢版 |
2018/01/10(水) 22:52:38.58ID:68cAMYmT
>>352-353
例えばこんな感じのKotlinコードをJavaへ変換してみればわかる
interface Interface1 { ... }
interface Interface2 { ... }
class SubClass (impl1:Interface1, impl2:Interface2) : Interface1 by impl1, Interface2 by impl2
0356デフォルトの名無しさん
垢版 |
2018/01/11(木) 06:56:39.64ID:irxu1jkK
>>355 ありがとうございます。
interface Interface1 { ... } が
open class Interface1 { ... } であったとしても、
class SubClass extends Interface1 implements Interface2
になるので、支障ないと思うのですが、どこか勘違いしていますでしょうか。
0357デフォルトの名無しさん
垢版 |
2018/01/11(木) 07:43:33.12ID:rggai+wG
>>356
ごめん多重継承は関係無かったね
問題になるのはコンストラクタかな
class SubClass extends SuperClass というJavaコードに相当するものに変換されるからには
SuperClass のコンストラクタを呼ぶ必要があるけど、
でも SuperClass by instance によってインスタンスが別に渡されたらSuperClassの実体が二つになってしまう
0358デフォルトの名無しさん
垢版 |
2018/01/11(木) 10:00:24.62ID:J2rrbjux
>>352
インターフェースでないと移譲が保証出来ないからでは

インターフェースと違ってクラスの場合はそれが持つオーバーライド可能なメンバ全て移譲しても移譲になるとは限らない
例えば、あるライブラリがInterface, SuperClass, それらを引数に取る関数を提供しているとする
Interfaceを受け取るならInterfaceとして扱うべき
(内部の実装クラスへダウンキャスト出来ること等を前提とすべきでない)で、
SuperClassを受け取る場合も同様だが
こちらはprivateメンバへのアクセスなども含まれていてそれは移譲出来ない
0359デフォルトの名無しさん
垢版 |
2018/01/12(金) 02:36:59.71ID:EycqiUrc
>>352
abstractやclassじゃextendsになっちゃうじゃん
したいのはimplementsじゃん
だからOnly interfaces can be delegated toって言われちゃうんだよ
0360デフォルトの名無しさん
垢版 |
2018/01/12(金) 17:51:43.69ID:to65cpCS
>>357の言いたかったこととは違うかもしれませんが、以下のように理解しました。

KotlinのdelegateはIn ActionではCollectionを引き合いに出しているが、
実際には、実装したクラスのコンストラクタがprivateで、
ヘルパークラスのファクトリメソッドを通じてしかインスタンスを生成できない
ようなケースで力を発揮する。

コンストラクタがpublicでopenなclassやabstractの場合、素直に継承することを想定している。
In Actionの例も(共変とか反変とかを抜きにすれば)実はArrayListの継承で解決できる。

逆に、classでのdelegateを認めるとfinalなclassも継承できてしまい、
これを禁止するために規則を増やすことになる。

>>359
書き込んだ動機としては、多数のプロパティを持ったクラスを継承したい時に、
class SuperClass(val comp1: Comp1, val com2: Comp2, ...)
class SubClass(instance: SuperClass) : SuperClass(instance.comp1, instance.comp2,...)
とすると、かなり宣言が不格好になるので、
class SubClass(instance: SuperClass) : SuperClass by instance
としたかったのです。

>>358
SuperClass内のSuperClassを引数に取る関数は、
SubClassにおいても引数としてSuperClassを渡せば正しく動作するので、
private(あるいはprotected)メンバへのアクセスがなくても、
実装可能でないかと思います。

ご指摘で理解できていない点があればご指摘いただければ幸いです。

皆様ありがとうございました。
0361デフォルトの名無しさん
垢版 |
2018/01/12(金) 19:14:43.07ID:EycqiUrc
interface InterfaceClazz{
val comp1:Any
var comp2:Any
fun method1()
}
class SuperClazz(override val comp1: Any, override var comp2: Any) :InterfaceClazz {
override fun method1() {
println("SuperClazz.method1 comp1:$comp1 comp2:$comp2")
}
}

class SubClazz(instance:SuperClazz):InterfaceClazz by instance
こういうのじゃだめなの?
0362デフォルトの名無しさん
垢版 |
2018/01/12(金) 22:32:24.26ID:to65cpCS
>>361
自分が作ったクラスの場合ならそうできることは考えましたが、
他人がinterfaceを定義せずに作ったクラスでやりたい場合どうすればいいんだろうという疑問でした。
0363デフォルトの名無しさん
垢版 |
2018/01/13(土) 08:10:52.44ID:9rLeDqe4
Java, C# が、interface を作った理由は、
C++ のclass の、ひし形の形になる、ダイヤモンド継承を嫌ったから

ほとんどの言語は、単一継承 + interface。
継承チェーンに、同じクラスが現れると困る

親クラス ← 子クラス1・2 ← 孫クラス

孫クラスが、子クラス1・2を多重継承すると、
両方の子クラス部分に、親クラスのメンバ変数を含んでしまう

孫クラスからすると、どちらの子クラス経由で、
親クラスのメンバ変数にアクセスすべきか、ややこしい

だから多重継承用に、メンバ変数を持たず、メソッドだけを持つ、interface が作られた

is-a・class・継承よりも、has-a・interface・委譲の方が、柔軟性があって好まれる
0367デフォルトの名無しさん
垢版 |
2018/01/13(土) 11:09:24.85ID:rLmRRKlD
>>364
実装はサブクラス側でやるんだからどうもなんねーだろ
0368デフォルトの名無しさん
垢版 |
2018/01/13(土) 12:17:34.58ID:7idPsqBM
delegataion 使った >>355 みたいなので Interface1 と Interface2 に同じメソッドが定義されている場合にはエラーになるけど、
SubClass で override しろって IDE が言ってくるので、それすればエラーは消える
delegatation 使わないのなら >>367 が言うようにサブクラスで実装するんだから関係無いね
0370デフォルトの名無しさん
垢版 |
2018/01/18(木) 20:57:21.62ID:uaAP/nEg
coroutine builderの例えばasyncの定義を見ると、
fun <T> async(
context: CoroutineContext = DefaultDispatcher,
start: CoroutineStart = CoroutineStart.DEFAULT,
parent: Job? = null,
block: suspend CoroutineScope.() -> T
): Deferred<T> (source)
ってなってんですが、blockパラメータの型が関数型になっているのですが、
型の前にCoroutieScope.とかついてるのですが、これはなんなんでしょうか??
0372デフォルトの名無しさん
垢版 |
2018/01/18(木) 22:42:32.43ID:uaAP/nEg
>>371
ありがとうございます。

うーん。ややこしい。何のためにこんなのが必要なんだ・・
呼び出される関数の方でもインスタンス(val a = A("aa"))を作って
関数を呼び出さないといけないってことですよね。
0374デフォルトの名無しさん
垢版 |
2018/01/22(月) 22:47:52.97ID:FT3BkIDm
delegateってパフォーマンス悪かったりします?
>>361のような方法を試したら、目に見えて遅くなりました。
もっとも他にも色々いじった後だから、他が原因の可能性もありますが....。
0376デフォルトの名無しさん
垢版 |
2018/01/23(火) 19:46:07.93ID:leMx6cGU
エルビス式のエルビスって何ですか?プレスリーしか出てこないんですけど
0378デフォルトの名無しさん
垢版 |
2018/01/23(火) 23:26:39.49ID:9+CEbA1m
>>375
調べてみたら、delegateよりも前に速度低下はあったようでした。ありがとうございました。
0379デフォルトの名無しさん
垢版 |
2018/01/24(水) 07:00:29.98ID:YOaqJu3C
?: これのどこがプレスリーなんだよ?と思った時の脳内に浮かんでいたのはサタデーナイトフィーバーの人だったのは俺だけだろうな
0380デフォルトの名無しさん
垢版 |
2018/01/24(水) 09:46:01.11ID:yQK5cwW2
?:)
0383デフォルトの名無しさん
垢版 |
2018/01/31(水) 16:05:14.51ID:4N9XMFe/
後はkotlinを使ってみて自分的にうらやましのは
・Null safety
・1ファイルに複数のクラス書ける
・コルーチン
ぐらいかな・・
0384デフォルトの名無しさん
垢版 |
2018/01/31(水) 18:17:51.93ID:hwMh3j1W
俺は
・val
・最後の引数のラムダを括弧の外に書けること
・「==」でnull考慮込みのequals()呼び出しにしてくれること
0385デフォルトの名無しさん
垢版 |
2018/01/31(水) 18:53:28.83ID:F5No3k5g
とにかくJavaと同じことをするのに記述量が圧倒的に少なくて済むのが良いわ。

一つ一つはそれこそ数行程度の違いになるけど、チリが積もって最終的にかなり短くなって可読性が段違い
0394デフォルトの名無しさん
垢版 |
2018/02/01(木) 23:15:10.58ID:oMkeAueE
そういえば Objective-C ってMacとかiOSで使われてるんだっけ?
0397デフォルトの名無しさん
垢版 |
2018/02/02(金) 05:20:56.67ID:s78i1eOK
いくらいい言語でも林檎様の傘下だと何されるかわからんからな
使えねーわ
0399デフォルトの名無しさん
垢版 |
2018/02/02(金) 08:41:42.94ID:V6ypn24z
Swiftはオープンソース化以降は言語開発もコミュニティベースで行われてる
頑張ってはいるようだけどいくつかの問題でObjCに戻る人も割と居るし
クロスプラットフォーム系との競合もあって人気は減少傾向
0401デフォルトの名無しさん
垢版 |
2018/02/02(金) 09:20:26.67ID:V6ypn24z
Kotlinでのクロスプラットフォームは Kotlin/Native(まだベータ) と Multi-OS Engine があるけど
UI部分が固有になるから React NativeのKotlin版のような
UIブリッジするライブラリが生まれてほしい
WebViewも手だけど
0404デフォルトの名無しさん
垢版 |
2018/02/02(金) 12:35:18.11ID:V6ypn24z
コミュニティの条件に収まらなくてサブスクリプションが要る都合でそっちは二の足
言語自体は割と好きだけど
0405デフォルトの名無しさん
垢版 |
2018/02/02(金) 19:53:43.35ID:YRu1rdgq
何年か前はiOSとandroidのクロスプラットフォーム開発はいまいちすぎて結局それぞれネイティブて開発したけど、今はどうなんだろうな
最近スマホアプリさわらんからよくわからん
0406デフォルトの名無しさん
垢版 |
2018/02/02(金) 21:37:32.04ID:00GaqTOE
あ、そうだ。iOSやMacの開発にKotlin使えれば全て丸く収まるじゃねえか。
MacだけならJREあるから既に動くのかな?
0413デフォルトの名無しさん
垢版 |
2018/02/03(土) 02:29:40.70ID:rIodJ30B
Xamarin程の糞はない
C#も10年前の時代遅れの言語だし圧倒的にswift,Java,Kotlinの方が人気が高いし求人も多い
VS for Macはgitでブランチを切り替えたりするだけでビルドできなくなって、
クリーン、リビルド、IDE再起動、PC再起動を頻繁に繰り返さないといけなくなる欠陥品なのが糞
大体MicrosoftはWindowsPhoneのシェアを二桁取ってからモノを言えと言いたい
MicrosoftがやっていることはGoogleやAppleの作ったパイを横取りしようとしているだけ
MVVM前提の開発環境とか言うくせに外部ライブラリを入れないと良い感じでMVVMできないのが糞
UIは共通化できると言うわりにListViewは重くてスワイプがもたついたり画像の表示が遅かったりするのが糞
Xamarin.Formsはちょっと複雑なことしようとするとお得意のdependency serviceとcustom rendererの連発
クロスプラットフォームと言うならXamarin.Formsだけでできないことを恥じろよ
WebViewなどXamarin.Formsの提供するUI部品が糞すぎて
一旦Xamarin.Formsの提供する機能で実装して糞な思いをさせられた後で
Xamarin.AndroidとXamarin.iOSで計3回も同じ実装をさせられるのが糞
Xamarinなんてマイナーな環境使っている人が少ないせいでググって調べものするのに時間がかかるのが糞
qiitaやstackoverflowの情報もXamarinに関するものはAndroidの10分の1以下の投稿しかなくて
下手すると解決策が見つからなくてデザインや機能の面で妥協する結果となる
任天堂のXamarin製アプリもカブドットコムのXamarin製アプリも星平均3.0の糞アプリ認定されてる
MicrosoftのAndroid向けedgeブラウザもXamarin製でなく、
Microsoft自身も糞認定して使わない糞開発環境がXamarin
エンジニアもデザイナーもお客さんも全員がっかりするのがXamarin
結論としてXamarinを使うと開発工数は伸びアプリのクオリティは落ちるということ
XamarinをやっているやつというのはC#の機能を使うことやXamarinを使うことそれ自体が目的化していて
お客さんに良いものを届けたいという意思が存在していない
ソフトウェアを作るということは価値のあるものを世の中に提供して世の中をもっといい場所にするために
行われることであるべきで、完全に自分本位でゴミを量産し続けるXamarinエンジニアは全員死んだ方が良い
0414デフォルトの名無しさん
垢版 |
2018/02/03(土) 08:57:07.88ID:cx3bBBlj
>>413
KotlinもUIはJVM, JS, Nativeとそれぞれ開発しないといけないという方向性なんだよね。
マルチプラットフォームでUIもKoltinで1回書くだけで済む日は来ないんだろうか。
>>406
Gluonという会社がAndroidとiOS向けのJVM(JavaFX付き)を作るとか言っていたんだけどどうなったのかな。
ページを見に行くとあるにはあるっぽい。
使った人とかいます?
0419デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:45:23.72ID:JaWlScCi
>>418
面倒なら
 ・SwiftやObjective-Cで直に作る
 ・Cordovaなどで作る
 ・iPhoneアプリは諦める
詳細は該当のスレでどうぞ
0420デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:50:47.55ID:w4Z6vlfg
>>417
こんなんあるのか、知らなかった。試してみるよありがとう。
ただクロスプラットフォームのライブラリって大体最終的にうまくいかないから、つい警戒してしまうw
0425デフォルトの名無しさん
垢版 |
2018/02/03(土) 12:54:52.62ID:3SRelbb9
実際クロスプラットフォームが最適なアプリってそんな多くないよな。
何かの画像処理をするとかそういう端末内で複雑なビジネスロジックを組まなくちゃいけないものならそこを共通化できるメリットはあるだろうけど、
サーバーサイドと通信して何かをするのがメインなクライアント系アプリなら普通にネイティブで2つ作った方が楽
0427デフォルトの名無しさん
垢版 |
2018/02/03(土) 13:29:02.91ID:g4V8Xpml
APIクライアントやちょっとした処理も完全に共通化できるから便利だよXamarin
Java,Kotlin / Swift,obj-cだと日付型と日付操作apiみたいな些細な部分でも違いがある
C#にすると文法や基本ライブラリの粒度で共通化できる
0429デフォルトの名無しさん
垢版 |
2018/02/03(土) 14:47:37.76ID:rIodJ30B
Xamarinみたいな糞はプロトタイプ開発でしか使い道ない
まともなアプリはみんなネイティブ
任天堂のXamarin製アプリもカブドットコムのXamarin製アプリも星平均3.0の糞アプリ認定されてる
Microsoft自身も糞認定して使わない糞開発環境がXamarin
0430デフォルトの名無しさん
垢版 |
2018/02/03(土) 15:38:21.40ID:I3vkx3c9
Unityは日本語入力の問題さえ解決すれば多分かなりの部分の解決になると思う。
なんせ画面を描くところから自力でやってるからな。
業務アプリでもポチポチ画面押すだけの物とか結構いけると思うし、実際あるんじゃないかな。
0431デフォルトの名無しさん
垢版 |
2018/02/03(土) 15:57:45.75ID:h3rMVgMV
共通部分はともかくUiはそのプラットフォームのネイティブでやったほうが結局は簡単なんだよな
0432デフォルトの名無しさん
垢版 |
2018/02/03(土) 16:06:38.75ID:g4V8Xpml
どのプラットフォームでもネイティヴで書いてもVとVMは普通に分離するだろ
なんでマルチプラットフォーム対応で追加のコストはかからない
0433デフォルトの名無しさん
垢版 |
2018/02/03(土) 16:32:01.67ID:c+hycmxt
>>430
おう業務アプリと入力フォーム部品の蜜月性なめんあ
Unityはゲームと家庭向けアプリ特化の方向性のままでいいと思うぞ
■ このスレッドは過去ログ倉庫に格納されています

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