Swiftで、オブジェクトは必ずいずれかのクラスに属していると考えて問題ないのでしょうか?
クラス内に書かれた関数のことをメソッドといいますが、クラス外にあるオブジェクトが存在しないのであれば、関数はすべてクラス内に書かれることになるので、関数=メソッドとなると思うのですが、この考えで正しいでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
swiftにはカプセル化を実現する方法として、クラスの他に構造体というのがあります。
(参考)
http://tea-leaves.jp/swift/content/構造体
オブジェクトにはクラス定義をもとにして生成した「クラスオブジェクト」と構造体定義をもとにした「構造体オブジェクト」があります。構造体は広い意味でクラスの一種と考えることもできますので、「オブジェクトは必ずいずれかのクラス(または構造体)に属している」と言ってよいと思います。
が、関数はクラスや構造体の外でも書くことができますので、関数=メソッドではありません。
(参考)
http://swift-nyumon.info/top_level_variable_and_function
投稿2016/06/11 22:24
総合スコア6299
0
以下のリンクが同じ様な疑問に対して、解説しているので参考にしてみてください。
関数とメソッドの違いがわからなくて少し調べたので自分なりにまとめてみた
swift
1class MyClass { 2 var str = "Hello" 3 4 func printStr() { 5 print(str) 6 } 7} 8 9var sample = MyClass() 10 11// メソッド呼び出し 12sample.printStr() 13//=> Hello 14 15 16// 関数呼び出し 例: print関数 17print(MyClass().str) 18//=> Hello
print関数の上でcommand + クリックをすると以下の様に書かれた関数定義に飛ぶことができます。
print関数はオブジェクトを生成しなくても使用できます。
swift
1/// Writes the textual representations of `items`, separated by 2/// `separator` and terminated by `terminator`, into the standard 3/// output. 4/// 5/// The textual representations are obtained for each `item` via 6/// the expression `String(item)`. 7/// 8/// - Note: To print without a trailing newline, pass `terminator: ""` 9/// 10/// - SeeAlso: `debugPrint`, `Streamable`, `CustomStringConvertible`, 11/// `CustomDebugStringConvertible` 12public func print(items: Any..., separator: String = default, terminator: String = default)
投稿2016/06/11 22:12
総合スコア8490
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/12 12:13