Kotlin 2
■ このスレッドは過去ログ倉庫に格納されています
おまえがそう思うのならそうなのだろう。おまえの中ではな。 >>335 not false が true でない? じゃあなに? >>337 このコードだとFalse以外のAnyでは >>337 >>333 と>>335 のコードが示すように Nullable(null)もStringも真偽値ではないため falseとtrueどちらにも等値でない falseでない真偽値はtrueだが falseでない値はtrueとは限らない 「True, null」だから違和感が有って 「not false, null」なら無かったのでは >>333 リンク先のコード消えてるよ 同じ接続元・同じURLで開くと変更モードになるようだから 「新規コード」を押してから扱わないといけない \ ∩─ー、 ==== \/ ● 、_ `ヽ ====== / \( ● ● |つ | X_入__ノ ミ そんな餌で俺様が釣られクマ―― 、 (_/ ノ /⌒l /\___ノ゙_/ / ===== 〈 __ノ ==== \ \_ \ \___) \ ====== (´⌒ \ ___ \__ (´⌒;;(´⌒;; \___)___)(´;;⌒ (´⌒;; ズザザザ >>343 ちょまど神への信仰が不足しているか背教者ですね >>278 の本は何故か新品よりも高い中古がもう出ているw (値段のタイプミスか?) 購入者の確認不足や品切れ時にたまたま買われることを狙った有名な詐欺だよ >>347 確かに可愛いがムネ大き過ぎ。 D,EかせめてFカップなら信者になってた。 classのdelegateってinterfaceしか出来ないみたいだけど、 classやabstractのインスタンスでdelegateできない理由をご存知の方いらっしゃいますでしょうか。 可: class SubClass(instance: Interface) : Interface by instance 不可: class SubClass(instance: SuperClass) : SuperClass by instance もちろんSuperClassはopen指定してあります。 >>352 に答えられる人にそんな野暮なこと言う方はいないと思いますが念のため。 In Actionには「インターフェースを実装しいているなら〜」とさらっと書いていて クラスでdelegateできない理由は触れられていませんでした。 >>352-353 例えばこんな感じのKotlinコードをJavaへ変換してみればわかる interface Interface1 { ... } interface Interface2 { ... } class SubClass (impl1:Interface1, impl2:Interface2) : Interface1 by impl1, Interface2 by impl2 >>355 ありがとうございます。 interface Interface1 { ... } が open class Interface1 { ... } であったとしても、 class SubClass extends Interface1 implements Interface2 になるので、支障ないと思うのですが、どこか勘違いしていますでしょうか。 >>356 ごめん多重継承は関係無かったね 問題になるのはコンストラクタかな class SubClass extends SuperClass というJavaコードに相当するものに変換されるからには SuperClass のコンストラクタを呼ぶ必要があるけど、 でも SuperClass by instance によってインスタンスが別に渡されたらSuperClassの実体が二つになってしまう >>352 インターフェースでないと移譲が保証出来ないからでは インターフェースと違ってクラスの場合はそれが持つオーバーライド可能なメンバ全て移譲しても移譲になるとは限らない 例えば、あるライブラリがInterface, SuperClass, それらを引数に取る関数を提供しているとする Interfaceを受け取るならInterfaceとして扱うべき (内部の実装クラスへダウンキャスト出来ること等を前提とすべきでない)で、 SuperClassを受け取る場合も同様だが こちらはprivateメンバへのアクセスなども含まれていてそれは移譲出来ない >>352 abstractやclassじゃextendsになっちゃうじゃん したいのはimplementsじゃん だからOnly interfaces can be delegated toって言われちゃうんだよ >>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)メンバへのアクセスがなくても、 実装可能でないかと思います。 ご指摘で理解できていない点があればご指摘いただければ幸いです。 皆様ありがとうございました。 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 こういうのじゃだめなの? >>361 自分が作ったクラスの場合ならそうできることは考えましたが、 他人がinterfaceを定義せずに作ったクラスでやりたい場合どうすればいいんだろうという疑問でした。 Java, C# が、interface を作った理由は、 C++ のclass の、ひし形の形になる、ダイヤモンド継承を嫌ったから ほとんどの言語は、単一継承 + interface。 継承チェーンに、同じクラスが現れると困る 親クラス ← 子クラス1・2 ← 孫クラス 孫クラスが、子クラス1・2を多重継承すると、 両方の子クラス部分に、親クラスのメンバ変数を含んでしまう 孫クラスからすると、どちらの子クラス経由で、 親クラスのメンバ変数にアクセスすべきか、ややこしい だから多重継承用に、メンバ変数を持たず、メソッドだけを持つ、interface が作られた is-a・class・継承よりも、has-a・interface・委譲の方が、柔軟性があって好まれる 複数のinterfaceでメソッド名が被ってたらどうするの? パッケージ名とinterface名で指定するんじゃね >>364 実装はサブクラス側でやるんだからどうもなんねーだろ delegataion 使った >>355 みたいなので Interface1 と Interface2 に同じメソッドが定義されている場合にはエラーになるけど、 SubClass で override しろって IDE が言ってくるので、それすればエラーは消える delegatation 使わないのなら >>367 が言うようにサブクラスで実装するんだから関係無いね Delegataion ってなんだ・・・Delegation ね 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.とかついてるのですが、これはなんなんでしょうか?? >>370 block内でのthisがその型のインスタンスになる 例 https://ideone.com/KsS26N >>371 ありがとうございます。 うーん。ややこしい。何のためにこんなのが必要なんだ・・ 呼び出される関数の方でもインスタンス(val a = A("aa"))を作って 関数を呼び出さないといけないってことですよね。 delegateってパフォーマンス悪かったりします? >>361 のような方法を試したら、目に見えて遅くなりました。 もっとも他にも色々いじった後だから、他が原因の可能性もありますが....。 エルビス式のエルビスって何ですか?プレスリーしか出てこないんですけど と思ってググったら本当にプレスリー由来だったのね、、 >>375 調べてみたら、delegateよりも前に速度低下はあったようでした。ありがとうございました。 ?: これのどこがプレスリーなんだよ?と思った時の脳内に浮かんでいたのはサタデーナイトフィーバーの人だったのは俺だけだろうな >>161 だけど Javaのリリースサイクルが6か月ごとになったので2018/3/20リリース予定 http://openjdk.java.net/projects/jdk/10/ ローカル変数の型推論きたー 後はGoogleさん早めにAndroidで使えるように。 後はkotlinを使ってみて自分的にうらやましのは ・Null safety ・1ファイルに複数のクラス書ける ・コルーチン ぐらいかな・・ 俺は ・val ・最後の引数のラムダを括弧の外に書けること ・「==」でnull考慮込みのequals()呼び出しにしてくれること とにかくJavaと同じことをするのに記述量が圧倒的に少なくて済むのが良いわ。 一つ一つはそれこそ数行程度の違いになるけど、チリが積もって最終的にかなり短くなって可読性が段違い Objective-Cを経験すれば大抵の言語は涙が出るほど読みやすい >>390 現役言語じゃないからもう新たに触ることないしなあ そういえば Objective-C ってMacとかiOSで使われてるんだっけ? いくらいい言語でも林檎様の傘下だと何されるかわからんからな 使えねーわ Swiftはオープンソース化以降は言語開発もコミュニティベースで行われてる 頑張ってはいるようだけどいくつかの問題でObjCに戻る人も割と居るし クロスプラットフォーム系との競合もあって人気は減少傾向 Kotlinでのクロスプラットフォームは Kotlin/Native(まだベータ) と Multi-OS Engine があるけど UI部分が固有になるから React NativeのKotlin版のような UIブリッジするライブラリが生まれてほしい WebViewも手だけど コミュニティの条件に収まらなくてサブスクリプションが要る都合でそっちは二の足 言語自体は割と好きだけど 何年か前はiOSとandroidのクロスプラットフォーム開発はいまいちすぎて結局それぞれネイティブて開発したけど、今はどうなんだろうな 最近スマホアプリさわらんからよくわからん あ、そうだ。iOSやMacの開発にKotlin使えれば全て丸く収まるじゃねえか。 MacだけならJREあるから既に動くのかな? Android studioはMac版もあるし当然Kotlinも使える ただ、iPhoneアプリは作れねぇ >>406 MacとiOSはMacが無いとコンパイルすら出来ないって糞みたいな仕様が一番のネックだからな Windowsもネイティブアプリはそうだろ? 違うっけ? 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エンジニアは全員死んだ方が良い >>413 KotlinもUIはJVM, JS, Nativeとそれぞれ開発しないといけないという方向性なんだよね。 マルチプラットフォームでUIもKoltinで1回書くだけで済む日は来ないんだろうか。 >>406 Gluonという会社がAndroidとiOS向けのJVM(JavaFX付き)を作るとか言っていたんだけどどうなったのかな。 ページを見に行くとあるにはあるっぽい。 使った人とかいます? >>406 Macだけなら余裕。 TornadoFXであっさり作れる。 >>406 >>407 KotlinでiPhoneアプリは作れる >>418 面倒なら ・SwiftやObjective-Cで直に作る ・Cordovaなどで作る ・iPhoneアプリは諦める 詳細は該当のスレでどうぞ >>417 こんなんあるのか、知らなかった。試してみるよありがとう。 ただクロスプラットフォームのライブラリって大体最終的にうまくいかないから、つい警戒してしまうw 時間掛かって低品質のアプリが出来上がるだけクロスプラットフォーム 正式セミナーで技術より人脈なんて宣伝する糞プラットフォームは使わない Xamarinは簡単だけど高品質かと言われると、、 実際クロスプラットフォームが最適なアプリってそんな多くないよな。 何かの画像処理をするとかそういう端末内で複雑なビジネスロジックを組まなくちゃいけないものならそこを共通化できるメリットはあるだろうけど、 サーバーサイドと通信して何かをするのがメインなクライアント系アプリなら普通にネイティブで2つ作った方が楽 APIクライアントやちょっとした処理も完全に共通化できるから便利だよXamarin Java,Kotlin / Swift,obj-cだと日付型と日付操作apiみたいな些細な部分でも違いがある C#にすると文法や基本ライブラリの粒度で共通化できる Xamarinみたいな糞はプロトタイプ開発でしか使い道ない まともなアプリはみんなネイティブ 任天堂のXamarin製アプリもカブドットコムのXamarin製アプリも星平均3.0の糞アプリ認定されてる Microsoft自身も糞認定して使わない糞開発環境がXamarin Unityは日本語入力の問題さえ解決すれば多分かなりの部分の解決になると思う。 なんせ画面を描くところから自力でやってるからな。 業務アプリでもポチポチ画面押すだけの物とか結構いけると思うし、実際あるんじゃないかな。 共通部分はともかくUiはそのプラットフォームのネイティブでやったほうが結局は簡単なんだよな どのプラットフォームでもネイティヴで書いてもVとVMは普通に分離するだろ なんでマルチプラットフォーム対応で追加のコストはかからない >>430 おう業務アプリと入力フォーム部品の蜜月性なめんあ Unityはゲームと家庭向けアプリ特化の方向性のままでいいと思うぞ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる