2016-04-10 24 views
0

私はthis tutorialに従っており、Swiftの基本的なゲームプログラミングを始めました。私はこのチュートリアルを完了しましたが、私がやったことをリファクタリングしたいと思っています。自分のファイルにグローバル関数を格納する方法があるかどうかを知りたいのですが、私はGameSceneクラス。グローバル関数を独自のファイルに分割しますか?

func + (left: CGPoint, right: CGPoint) -> CGPoint { 
    return CGPoint(x: left.x + right.x, y: left.y + right.y) 
} 

は、現在のところ私のGameSceneクラスと同じファイルに座ってこれらのオーバーロードされた演算子の数だが、それの外で宣言され、それが肥大化/汚い感じています。

答えて

1

別のSwiftファイルに入れてください。 Swift関数(およびクラス、構造体、列挙体など)はデフォルトでinternalです。つまり、同じモジュール内のどこからでも使用できます。新しいファイルが同じモジュールに属している限り、何かをインポートする必要はありません。

あなたがここにこのトピックに関する詳細を見つけることができます:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html

+1

ああ神様...私はそれが簡単だとは信じられない!ありがとうございました :) – sowasred2012

0

あなたは拡張子を使用することができます。あなたの場合は、任意のviewControllerファイルに拡張を追加します。エクステンションはviewControllerクラス内でセル化することはできません。つまり、コードの最後に最後の中括弧 "}"の後に拡張子を追加します。

extension UIViewController { 

    func + (left: CGPoint, right: CGPoint) -> CGPoint { 
    return CGPoint(x: left.x + right.x, y: left.y + right.y) 
} 
} 

次に、そのプロジェクトの任意のviewControllerクラスで関数を呼び出すことができます。

関連する問題