問題タブ [swift-extensions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - プロトコル拡張の型からデフォルトの静的変数に直接アクセスできますか?
Swift の楽しみとして、代わりに具体化された API をGCD
. だから私はこれを遊び場に投げました:
しかし、これは最後の行でエラーを引き起こします:
これが何を言っているのかわかりません。つまり、私はそれを読みました。しかし、私は本当の問題を見ていません。Double
のようなものの型変数をどのように持っているかを調べましたNaN
が、同様の種類のアクセサーで別の型を拡張できない理由がわかりません。
(私は違いなしで別のものを試しましたtypealias
)
更新: @Kametrixom の回答はすぐには役に立ちませんでしたが、最終的にはおそらく貢献しました。電球が点灯するために私がしなければならなかったことは次のとおりです。
わかりました、それはうまくいきました。今は構造体です。
それもうまくいきました。拡張されたデフォルト実装を持つプロトコル:
ただし、プロトコルを使用してクラスまたは構造体を拡張します。
そして、それは機能します。私が犯していた間違い (だと思いますか?) は、Humble 型のファースト クラスのインスタンスが実行されていて、その動作が付加されていると想定したことでした。むしろ、構造体/クラス型に追加される動作の単なるテンプレートです。
質問のタイトルを変更しました。そして答えはノーです。
swift - 拡張機能のジェネリック パラメーターに制約を追加する
私はこの機能を持っています:
ご覧のとおり、[Key: Value?]
辞書を辞書に変換し[Key: Value]
ます (オプションなし)。
Dictionary
値が任意の型のクラスに対してのみ新しいメソッドを使用してクラスを拡張したかったOptional
のですが、辞書の汎用パラメーターに制約を追加できません。
これは私が試したものです:
しかし、エラーで失敗します:
swift - 2 つの異なるモジュールで同じクラス拡張
私のプロジェクトには、NSDate の拡張機能を実装するフレームワークがあります。拡張子はこんな感じ。
このフレームワークをアプリ プロジェクトにインポートしました。同じ拡張子をコピーしてアプリの Swift ファイルに貼り付けると、アプリのコードの新しいコピーがフレームワークのコードのコピーを上書きするように見えます。
アプリでこの関数を呼び出すときに、名前空間を使用して必要な実装を指定する方法はありますか?
ios - Self.Type は、Swift の object-c クラスの拡張で AnyClass に直接変換できません
正しい nib 名で UIViewController を作成するファブリック メソッドを作成しようとしています (iOS8 のデフォルトの初期化子の問題を修正するため)。それを行うために、拡張機能を追加しました:
ただし、コンパイラは error: Cannot convert value of type 'Self.Type' to expected argument type 'AnyClass' (aka 'AnyObject.Type')
in を発行しますNSStringFromClass(self)
。
これを修正するには、別の拡張メソッドを追加して、コードを次のように書き換えます。
ただし、最初のバリアントの問題を理解したいと思います。
私が理解しているように、メソッドを返すSelf
ことは一種のジェネリックメソッドです。Self
多くのコンテキスト (クラス、構造体、プロトコルなど) で使用できますが、Self.Type
一致AnyClass
するのはクラスのみです。
私の場合、コンパイラはとそのすべてのサブクラスをSelf
参照していることを認識している必要があるため (拡張機能内にあるため)、に変換可能でなければなりません。UIViewController
UIViewController
Self.Type
AnyClass
コンパイラは追加の型分析を実行しないため、何か見逃していますか、それとも正しい動作Self
ですか?
ios - UIViewの拡張
私のコードは Swift 2.0 で書かれており、展開ターゲットは iOS 8.0 以降です。を使用する代わりにUIView.animateWithDuration()
、カスタム関数を使用できるように UIView を拡張しようとしています。円を取り、UIView
角の半径が高さと幅の半分のままであるが、正方形を埋めるように保持したい。したがって、UIView
は長方形の境界に達するまで現在の形状で拡張する必要があります。UIView で拡張機能を使用したいと思います。以下のように。
動作するコードは.
swift - プロトコル拡張タイプの Self が初期化子のタイプと一致しません
学術的な目的のために、私は次のような表現を好むとしましょう
ストックというより
さまざまな Swift 整数型のすべてがIntegerType
プロトコルに準拠していて、これらの int 型のすべての種類に適合する初期化子があるように思われるため、Double()
次のようなことができると思いました。
これは動作しません。そして、私はその理由を知りたいですか?それを機能させる魔法があるかどうか知りたいですか?たぶんwhere
?それともself
リファレンスと関係がありますか?
これで試したプレイグラウンドのコンソールに表示されるエラーは次のとおりです。
arrays - オプション付きの Swift Array 拡張機能
一意の要素のみを追加する Array の単純な拡張機能を作成しました。オプションの配列を操作するまでは問題なく動作します。それ以来、エラーが発生し続けています
Type 'Event?' does not conform to protocol 'Equatable'
イベントクラス
拡大
使用法
質問
この状況がわかりません。Event
クラスはそのプロトコルに準拠しています。他の機能の組み合わせも追加しようとしまし==
たが、成功しませんでした。
この問題をどのようにアプローチすればよいかわかりません。それは私の拡張子の問題ですか?どのように適切にアプローチすればよいですか?正しい道を教えていただけますか?
swift - Swift: 汎用プロトコル
構造体に依存する戻り値の型が異なるだけの同じメソッド名を持つ個々の拡張機能でプロトコル準拠が生成されるいくつかの迅速な構造体があります。それに加えて、ジェネリック型のプロトコル準拠関数を呼び出すジェネリック関数でそれらを使用したい)。//: 遊び場 - 名詞: 人が遊べる場所
残念ながら、次のエラーが発生します: /var/folders/sn/78_zvfd15d74dzn01mdv258h0000gq/T/./lldb/3741/playground6.swift:7 :17: 注: プロトコルにはタイプ ' () -> T の関数 'createMe()' が必要です' (別名 '<τ_1_0> () -> τ_1_0') static func createMe()->T;
ここで正確に準拠していないものは何ですか?回避策はありますか?