質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

793閲覧

【Swift】「プロジェクト名.クラス名」になる理由

duck015

総合スコア29

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/03/23 07:02

編集2020/03/23 07:02

前提・実現したいこと

Swiftでクラスのインスタンスの中身を確認しようとする際、
下記のようにprintしたときにプロジェクト名.Memberという風に出力されるのは何故なのでしょうか?
調べてもどういう理由からこのように出力されるのか分からず、ご教示いただけないでしょうか?

該当のソースコード

class Member { let name: String let age: Int let account: Account init(name: String, age: Int, account: Account) { self.name = name self.age = age self.account = account } } let yoshio: Member = Member(name: "yoshio", age: 62, account: account) print(yoshio) //プロジェクト名.Member

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/03/23 07:14

具体的にはどのような表示がでたのでしょうか。 また、表示もplaygroundで実行した場合とiOS Appなどを作成している時の表示は異なってきますが、どちらの環境でしょうか。
退会済みユーザー

退会済みユーザー

2020/03/23 07:21

そこに書いたらクラスのインスタンスではないような…
duck015

2020/03/23 07:28 編集

すみません、コードは下記記事より引用したものです...。 https://qiita.com/hirothings/items/7cebf623ed0c1765febc 実際に過去にプロジェクト名.クラス名でデバッグエリアに出力されたことがあり、その際はスルーしていたのですが、この記事を見つけ気になったため、質問をさせていただいたという次第です。 コードを軽率にコピペしたため、分かりづらくなってしまい申し訳ございません...。
TsukubaDepot

2020/03/23 07:59

Xcode 11.3.1 (11C504)/Swift 5.1.3 だと __lldb_expr_*.Member (playground, *は実行環境による) <Member: 0x*; ....> (Xcode, *は実行環境による) となり、少なくともプロジェクト名などは表示されないようです。 参考にされている記事も3年経過しており、現状と異なっている可能性もあります。 「このように表示されることになっている」以外に答えがないような気がします。 ちなみに、質問者さんはどのような結果を期待されていたのでしょうか。
duck015

2020/03/24 04:38

自分も確認してみたところ、同じように出力されました。 最初に手元で確認するべきでした、申し訳ございません。 自分としては記事にある通り、プロジェクト名.クラス名と出力されるものと思っていました(過去に同じ経験をしたことがあったため)。 過去と同じような状況を再現できたので、再度別の質問を投稿させていただきたいと思います。 この度は大変お手数おかけしました。
guest

回答1

0

手元では確認したわけではありませんが、たぶん名前空間の事かと思います。

参考:
Swiftの名前空間とは
https://tsuchikazu.net/swift_namespace/

Swiftではあまり名前空間を意識することはありませんが、
例えば自分のプロジェクトにMemberクラスがあり、Podsで入れた他のライブラリ内(import済み)にもMemberクラスがあった場合、一言「Member」と書いただけではどちらか一方が優先的に使われてしまい、もう片方を利用することができません。

しかし名前空間の仕組みがあれば、
A.Member
B.Member
のように2つの型を区別することができます。

名前空間はモジュールごとに勝手に付与されたと思うので、
今回はそれがprintで出てきただけではないかと思います。

投稿2020/03/23 07:30

編集2020/03/23 07:35
takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

duck015

2020/03/24 04:43

名前空間というのは初めて聞きました。 大変勉強になりました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問