2017-08-12 5 views
3

Rubyをドキュメント化するには、たとえばTime::nowまたはTime#dayと書いてください。 Swiftをどのように文書化すればよいですか?Swiftドキュメント:インスタンス/型プロパティ/メソッド表記

Swiftを文書化するとき、型とその1)型のプロパティまたはメソッド、または2)インスタンスのプロパティまたはメソッドの表記法は何ですか?

たとえば、::(2つのコロン)はクラスプロパティまたはメソッドを表し、記号#(数字記号、ハッシュ、ハッシュタグ、またはシャープ記号)はインスタンスプロパティまたはメソッドを表します。したがって、Time::nownowがクラスプロパティまたはメソッドTimeであり、Time#daydayTimeのインスタンスプロパティまたはメソッドであることを意味します。

スウィフトのドキュメントにそのような表記法の構文がありますか?

私はSwiftのドキュメントの機能表記を知っています。たとえば、Swift append(_ newElement: Element) method for Arrayappend(_:)と記載されています.Appleのドキュメントにこの表記の例がたくさんあります。しかし、SwiftにはどのようにしてArray#append(_:)を書きますか?

答えて

2

ドキュメントについてお尋ねする場合は、インラインコードコメントからドキュメントを作成するためのツールJazzyをチェックアウトすることをお勧めします。コードコメントからスタンドアロンのドキュメンテーションを作成するのはいい方法です。これはAppleの規約と一貫しています。

基本的な使用方法は次のとおりです。のは、次のようにあなたには、いくつかのクラスが定義されていることを想像してみましょう:

enter image description here

注意が、それだけであなたの引数のラベルを示しています:

/// Some incredibly useful class 

public class MyClass { 

    /// Performs some foo-like operation 
    /// 
    /// - Parameter bar: The bar parameter. 

    public class func foo(_ bar: String) { 
     // do something 
    } 

    /// Some bazzy operation 
    /// 
    /// - Parameter qux: The bar parameter. 

    public func baz(_ quz: String) { 
     // do something 
    } 
} 

ジャジー意志がどのように見えるのドキュメントを生成します。あなたは1をタップした場合、それはタイプの方法だとかどうか、それはパラメータ名が何であるかを示しています、それはあなたがドキュメントを話していた明確ではありませんでした元の質問で

enter image description here


ので、私コードで遭遇する慣習について論じた。その答えは以下の通りです。


スウィフトでは、インスタンスとプロパティタイプの両方で.です。

これは単に.の先行する問題です。それが型の場合は、型のプロパティ/メソッドです。考えてみましょう:これはFoo型に対して、typeプロパティbarを参照している

let b = Foo.bar 

。しかし、先行するものが.が型のインスタンスであれば、インスタンスのプロパティ/メソッドを扱うことになります。検討:この場合

let b = Baz() 
let q = baz.qux 

quxBazのインスタンスのプロパティを参照している、Bazタイプのbため、インスタンス。問題の曇りのリスクが


、上記パターンへの警告は、スイフトの「セレクタ」(古いObjective-Cのパターン)の使用です。この場合、targetの選択は、selectorが何を参照するかを示します。 targetのインスタンスを指定すると、selectorはインスタンスメソッドを参照しています。 targetの型を指定すると、selectorは型メソッドを参照しています。私たちがしている場合、これらの二つの例の両方で、

Timer.scheduledTimer(timeInterval: 1, target: ViewController.self, selector: #selector(ViewController.foo), userInfo: nil, repeats: false) 

注:以下は型メソッドを呼び出しますに対し

Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.foo), userInfo: nil, repeats: false) 

:したがって、この例では、selectorは、インスタンスメソッドを参照しています同じクラス内で対話する場合、一般的にクラス名を省略します。タイプが別のクラスにある場合は、そのタイプを明示的に参照するだけで済みます。しかし、target/selectorというパターンは、別のやや異なった、Class.methodの構文を使用していることを示すだけであるためです。

ただし、この例外は一意です。一般的なパターンはxxx.yyyです。xxxがある種のインスタンスであれば、yyyはインスタンスのプロパティ/メソッドですが、xxxが何らかのタイプの名前であれば、yyyはタイププロパティ/メソッドです。 append(_:)として


append(_ newElement:)の言及は全く異なるものです。これは、最初のパラメータnewElementに外部ラベルがないため、ラベルなしで呼び出された場合に過ぎません。 array.append(object)。だからappend(_:)はそれがどのように呼び出されたかを示す表記法です(ここでは内部パラメータ名が何であるか気にしません)。append(_ newElement:)は実装方法です(メソッド内でこのパラメータを参照する方法を知りたいところです) 。

+0

まあ、これは私が探していた答えはありませんでしたが、とにかくレッスンをありがとうございました。 :-)私はドキュメンテーションの目的で表記法について疑問に思っています。もっと明確にするために質問を更新しました。 – ma11hew28

1

残念ながら、Swiftには、型名/接頭辞付きの型プロパティ/メソッドとインスタンスプロパティ/メソッドを区別する公式または広く認められた表記法はありません。

(だから、いつもスウィフトプログラマー(でも専門家が)あなたが求めているものを理解することはできません。)

タイプ名接頭辞フォームは実際にそう頻繁にSwift bookで使用しますが、されていません。

は、私の知る限りがチェックとして:一部で

  • を、typeプロパティをUInt32.maxのような形で言及されていますが、これを見るようにすることだけスウィフト式として有効な実際の表記を使用しています。

  • タイプメソッドはLevelTracker.unlock(_:)のようなフォームと呼ばれますが、これもSwiftの有効な表現であり、アップルがこれをタイプメソッドのドキュメント表記として使用しているかどうかはわかりません。Swiftの本では一見してもわかりませんが、初期化子はしばしばString.init(data:encoding:)のような形式で参照されていますが、これもSwiftの有効な表現です。他の例については

  • 、インスタンスメソッドやプロパティはinstanceVar.methodName(_:)またはinstanceVar.propertyNameと呼ばれ、もちろんinstanceVar近くのコードスニペットに表示され、これは実際にあなたが探しているものではありません、タイプ名ではありません。

そして、あなたが既に知っているとして、Appleの公式の参考文献に、メソッドやプロパティがプロパティインスタンスメソッドタイプの方法インスタンスプロパティまたはタイプを見出して示されています。または、class/static var/letclass/static funcvar/letまたはfuncの接頭辞。

非常に短い例では見つかりませんでしたが、アップルを含むいくつかの記事は、インスタンスのメソッドをTypeName.methodName(_:)(またはインスタンスプロパティ)の形式でも参照している可能性があります。Swiftコミュニティは、インスタンスメンバーは重要ではありません。

私は多くの時間がかかるが、

スウィフトは、タイププロパティ/メソッドとインスタンスプロパティ/型名を持つメソッドは接頭辞のフォームを区別するために、公式または広く受け入れられている表記法を持っていないことは明らかであると思われることができませんでした。

たぶん、あなたはArray#append(_:)を表現するためにインスタンスメソッドArray.append(_:)のようなものを記述する必要があります。

(注意することは、Array.append(_:)もスウィフトで有効な式である。)

関連する問題